当前位置: 代码迷 >> J2SE >> 初学者请问,帮忙看上while和a++组合
  详细解决方案

初学者请问,帮忙看上while和a++组合

热度:8543   发布时间:2013-02-25 00:00:00.0
菜鸟请教,帮忙看下while和a++组合

public class whiletwo
{
public static void main(String[] args)
{
int sum=0;
int a=1
  while(sum<5){
sum=sum+a;
a++; 
System.out.println(a);
}
}

}
 第一步:a=1 sum=0,所以sum=0+1 ,执行a++ , 此时a还是1,所以输出结果1
 第二步:a=2 sum=1,所以sum=1+2 ,执行a++, 此时a还是2,输出结果2
第三步: a=3 sum=3,所以sum=3+3>5,程序停止。
可是程序执行后的结果是 2
  3
  4
请问我那里错了。
求大家指正,谢谢。

------解决方案--------------------------------------------------------
第一句就说错了:
第一步:a=1 sum=0,所以sum=0+1 ,执行a++ , 此时a还是1,所以输出结果1

应该是:
第一步:a=1 sum=0,所以sum=0+1 ,执行a++ , 执行后a为2,所以输出结果2
------解决方案--------------------------------------------------------
你没有正确的理解a++,在这个代码,先执行sum=sum+a,然后在执行a++,并把自加后的a ,赋给下一次的a作为初值;
这样代码看起来就明白了:

public class whiletwo
{
public static void main(String[] args)
{
int sum=0;
int a=1;
while(sum<5){
sum=sum+a;
a++; 
System.out.println(sum);
System.out.println("-----------------");
System.out.println(a);
}
}

}
这个代码体现的是自加运算的区别; 例如a=1
对于x=a++是先运算,在赋值, x=1,a=2
对于y=++a 是先赋值,在运算,y=2,a=2 



对于 sum=0,a=1 求出sum=1 ,a=2
对于 sum=1, a=2 求出 sum=3,a=3
对于 sum=3,a=3 求出 sum=6,a=4;
而要求sum<5,所以sum=6,不成立,以后停止循环




  相关解决方案