public class ArrayCopier { public static void main(String [] args) { int [] array1 = {7,4,8,1,4,1,4}; float[] array2 = new float [array1.length]; int count1 =0; int count2 =0; while(count1++<= array1.length) { if(array1[count1]==1) continue; array2[count2++]=(float)array1[count1]; System.out.println(array2[count2]); } } }
...我就闲一次吧.. 你这个程序有问题.
初始:array1.length为7 , count1=0 ,count2=0
第一次循环:
1)while(count1++<= array1.length), 初始count1=0 所以 0<= 7为真, 然后count1加1, 即count1=0+1=1
2)if(array1[count1]==1), 因为上面count1=1. array1[1]的值为4, 条件不成立.
3)array2[count2++]=(float)array1[count1], 初始count2=0 所以 array2[0]=array1[1]. 即array2[0]=4,然后count2加1, 即count2=0+1=1
4)System.out.println(array2[count2]); 因为count2=1, 所以array2[1]=0; 输出为0.
第二次循环:
1)while(count1++<= array1.length), count1=1 所以 1<= 7为真, 然后count1加1, 即count1=1+1=2
2)if(array1[count1]==1) , 因为上面count1=2. array1[2]的值为8, 条件不成立.
3)array2[count2++]=(float)array1[count1], count2=1 所以 array2[1]=array1[2]. 即array2[1]=8,然后count2加1, 即count2=1+1=2
4)System.out.println(array2[count2]); 因为count2=2, 所以array2[2]=0; 输出为0.
第三次循环:
1)while(count1++<= array1.length), count1=2 所以 2<= 7为真, 然后count1加1, 即count1=2+1=3
2)if(array1[count1]==1) , 因为上面count1=3. array1[3]的值为1, 条件成立. 直接进入下一个循环.
后面的都是重复的步骤.
直到第六次循环:
1)while(count1++<= array1.length), 第六次循环时count1=6 所以 6<= 7为真, 然后count1加1, 即count1=6+1=7
2)if(array1[count1]==1) , 因为上面count1=7. 所以array1[7] 超出索引界限。直接报错。 结束程序.
谢谢您~!万分感谢~!看懂了
....将数组1中的不等于1的数放到数组2中.一个是数组1的下标一个是数组2的下标
好闲啊
麻烦您调试一下,看看是不是您说的那样?
@lubocsu: ...这个不需要调试啦..直接看就知道了.你是新手?
@吴瑞祥: 是新手,在自学,觉得看不太懂,自己变换自增,看看程序的结果。谢谢!
你只需要记得,++在后面,是先用count1的值去判断,然后再修改count1的值为count1+1。
是这样的,之前不太懂在循环语句中自增变量的变化和普通语句是一样的,谢谢!
前++,先+1再取值;后++,先取值再+1;
谢谢您!是这样的,谢谢!
运行后直接报错,count1最后等于7,超出数组边界。while(count1++<= array1.Length)中,第一次循环count1==1了
谢谢您!我还想请教您用的是哪个开发环境?我还在用txt在学,谢谢!
@lubocsu:
我用的是visual studio ;但你的代码应该是java的,可以考虑用eclipse 网上可以免费下载!
@JackWang-CUMT: 好的,谢谢!感觉你的显示好直观