public class LuckyMan {
public static void main(String args[]){
int a[] = {1,2,3,4,5,6,7,8,9,10};
start(a);
}
public static void start(int a[]){
int n = a.length;
if(n == 1){
System.out.println("幸运人士为:" + a[0]);
}else{
for(int i=0; i<n-1; i++){ //将奇号位置为0
if(i % 2 == 0){
a[i] = 0;
}
}
int newN = n / 2; //新数组长度为原数组长度的一半
if(n>1){ //将原数组非0元素复制到新数组中
int temp[] = new int[newN];
int j = 0;
for(int i=0; i<n; i++){
if(a[i] != 0){
temp[j] = a[i];
j++;
}
}
start(temp);
}
}
}
}
解决方案 »
- 求高手js的问题
- 如何找到网上可用的代理服务器?
- 请问SmartUpload的官方网站和源码在哪里能得到???
- 不明白,使用继承的两个条件,不明白,高手帮忙~~~
- 有一个JNI的问题
- 为什么模态窗口不见了,程序也死了的样子???
- 我不会:我坦白,大家来帮忙--之第3回——applet
- 感谢Yangtian同志的支持,特发贴散分,以示感谢!也希望各位能畅谈java学习之道以示教导!
- 谁有struts的成功例子,可以分享一下?
- java.io.IOException: Not an ISO 8859_1 character:星
- 类型转换问题,还是搞不懂
- 有谁知道如何使用SwingSet3里的皮肤样式
应该先判断一次非0元素有多少个,以便精确地为temp[]申请长度
for(int i=0; i<n-1; i++){ //将奇号位置为0
if(i % 2 == 0){
a[i] = 0;
}
}正如楼上所说的 这个for循环 i < n - 1 改成 i < n
使用第一次循环的结果为:
0 2 0 4 0 6 0 8 9int newN = 9 / 2=4;第二个循环的时候,i < n ,就是可以遍历所有的9个元素,可以看到有5个元素不为0,而新的数长度只有4,所以会溢出