首页 新闻 会员 周边

求解程序的运行步骤?关于在循环语句中的自增问题

0
悬赏园豆:30 [已解决问题] 解决于 2015-10-22 15:31
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]);
               }
       
     }
    
    

  }
lubocsu的主页 lubocsu | 初学一级 | 园豆:46
提问于:2015-10-22 11:21
< >
分享
最佳答案
0

...我就闲一次吧.. 你这个程序有问题.

初始: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] 超出索引界限。直接报错。 结束程序.

 

 

 

收获园豆:10
李丶GuanYao | 小虾三级 |园豆:1228 | 2015-10-22 14:31

谢谢您~!万分感谢~!看懂了

lubocsu | 园豆:46 (初学一级) | 2015-10-22 15:32
其他回答(4)
0

....将数组1中的不等于1的数放到数组2中.一个是数组1的下标一个是数组2的下标

好闲啊

吴瑞祥 | 园豆:29449 (高人七级) | 2015-10-22 11:23

麻烦您调试一下,看看是不是您说的那样?

支持(0) 反对(0) lubocsu | 园豆:46 (初学一级) | 2015-10-22 11:35

@lubocsu: ...这个不需要调试啦..直接看就知道了.你是新手?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2015-10-22 11:36

@吴瑞祥: 是新手,在自学,觉得看不太懂,自己变换自增,看看程序的结果。谢谢!

支持(0) 反对(0) lubocsu | 园豆:46 (初学一级) | 2015-10-22 11:44
0

你只需要记得,++在后面,是先用count1的值去判断,然后再修改count1的值为count1+1。

收获园豆:5
幻天芒 | 园豆:37175 (高人七级) | 2015-10-22 13:15

是这样的,之前不太懂在循环语句中自增变量的变化和普通语句是一样的,谢谢!

支持(0) 反对(0) lubocsu | 园豆:46 (初学一级) | 2015-10-22 15:34
0

前++,先+1再取值;后++,先取值再+1;

收获园豆:5
01码匠 | 园豆:129 (初学一级) | 2015-10-22 13:19

谢谢您!是这样的,谢谢!

支持(0) 反对(0) lubocsu | 园豆:46 (初学一级) | 2015-10-22 15:34
0

运行后直接报错,count1最后等于7,超出数组边界。while(count1++<= array1.Length)中,第一次循环count1==1了

收获园豆:10
JackWang-CUMT | 园豆:2866 (老鸟四级) | 2015-10-22 14:15

谢谢您!我还想请教您用的是哪个开发环境?我还在用txt在学,谢谢!

支持(0) 反对(0) lubocsu | 园豆:46 (初学一级) | 2015-10-22 15:36

@lubocsu: 

我用的是visual studio ;但你的代码应该是java的,可以考虑用eclipse 网上可以免费下载!

支持(0) 反对(0) JackWang-CUMT | 园豆:2866 (老鸟四级) | 2015-10-22 15:39

@JackWang-CUMT: 好的,谢谢!感觉你的显示好直观

支持(0) 反对(0) lubocsu | 园豆:46 (初学一级) | 2015-10-22 15:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册