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
请问我那里错了。
求大家指正,谢谢。

解决方案 »

  1.   

    第一句就说错了:
      第一步:a=1 sum=0,所以sum=0+1 ,执行a++ , 此时a还是1,所以输出结果1应该是:
      第一步:a=1 sum=0,所以sum=0+1 ,执行a++ , 执行后a为2,所以输出结果2
      

  2.   

    如果你想要输出1,2,3这样的结果你只需要这样改代码就可以了:
    public class whiletwo {
    public static void main(String[] args) {
    int sum = 0;
    int a = 1;
    while (sum < 5) {
    sum = sum + a;

    System.out.println(a);
    a++;
    }
    }}
      

  3.   

    第一步:a=1 sum=0,所以sum=0+1 ,执行a++ , 此时a是2,所以输出结果2
    第二步:a=2 sum=1,所以sum=1+2 ,执行a++, 此时a是3,输出结果3
    第三步:a=3 sum=3,循环之前sum=3,继续执行while,sum=3+3,a++此时a是4,输出结果4
    第四步:sum>5,程序运行结束。
      

  4.   


    我知道a++应该先代到程序执行后才+1.题目里面我理解的是先输出1,然后+1
    再帮我看下 :
    public class whiletwo
    {
    public static void main(String[] args)
    { int a=1;
           
             
    System.out.println(a++);
    System.out.println(a--);
    }}
    这个答案是 1   第一步,先代入表达式a=1,输出1后,a=1 
                  第二部的a-- 中的a=2,输出2后,a=1
             请问我那里理解错了。谢谢。今天看书看到后面发现理解有问题,又回头看之前的,还是找不到问题。  
      

  5.   

    是不是a++单独放一行,到下一个表达式的时候a=a+1啊?
      

  6.   

    public class whiletwo
    {
    public static void main(String[] args)
    {
    int a=1;    
    System.out.println(a++);//此时输出的还是a的原值,之后才加1
    System.out.println(a);//第二部时,a的初值为2
    System.out.println(a--);//此时输出的还是a的值,之后才减1
    System.out.println(a);//相当于a--执行之后a的值
    }
    }
      

  7.   

    你说下面输出的是什么??
    int i = 9;
    System.out.println(i++);
    System.out.println(++i)
      

  8.   

    你没有正确的理解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,不成立,以后停止循环