public class test {
   public static void main(String [] args){ 
     int sum=3,a=4,b=6,c=8;
    while(a<=b){
       while(b!=c)  {
          sum=sum+b;
            b++;
       }
      b=6;
      a++;
    }
    System.out.println(sum);
 }

我问了别人,给我的答案是sum=3+3*(6+7)=42 。。我知道42是对的,但不知他这样写计算过程对不对,我不理解它的写法,,3*(6+7)是什么意思,怎么来的,,请高手解答一下,我刚开始学JAVA。。另外像这样两个while是在条件满足的情况下同时执行还是先执行里面的那个啊,,,我删掉外面的while,只留里面的执行结果是16,,加外面while这个16是怎么变成42了啊

解决方案 »

  1.   

    外面while循环3次,循环体内嵌一个while,外面的while每循环一次,内嵌的while会循环2次,分别在sum原值上+6和+7(+7是因为b++)
    sum原值就是3,所以就有3+3*(6+7)里面的while是外面while循环体的一部分,先执行外面while,记住:while的循环体就是while后{}中的内容
    执行顺序是:第一次4<6,然后执行内嵌的while,使得sum=3+6+7,b=7,内嵌while执行完退出循环,但是这时候外面的while的循环体还没有执行完,
    接着执行b=6,a++,使得a=5
    然后外面while第二次循环5<6,依次类推删掉外面的,里面的while就是循环2次,分别在sum原值上+6和+7(+7是因为b++),所以得16
      

  2.   

    public class Test {
        public static void main(String[] args){
            int sum = 3, a = 4, b = 6, c = 8;
            while(a <= b){ //<---控制3次循环的条件
                while(b != c){
                    sum = sum + b; //<---sum + 6 + 7
                    b++;
                }
                b = 6;
                a++; //<---控制3次循环的关键
            }
        System.out.println(sum);
        }
    }第一次循环sum的值是16;第二次循环sum的值是29;第三次循环sum的值是42。