日期:2014-05-20  浏览次数:20608 次

菜鸟请教,帮忙看下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,不成立,以后停止循环