public class CycleSum{ 
  public static void main(String [] args){ 
  int sum = 0, sum2=0; 
  for (int i=1;i <=100 ;i++ ){ 
      sum += i; 
    } 
    System.out.println("使用for语句从一到一百相加结果"+sum);   int i=1; 
  while (i <=100){ 
  sum2 += i;i++; 
    } 
  System.out.println("使用while语句从一到一百相加结果"+sum2);   int sum3=0;
  do
  {sum3 += i; i++;
  }
  while (i <=100);
  System.out.println("使用do-while语句从一到一百相加结果"+sum3); 
  }
}
 

解决方案 »

  1.   

    第三个i是第一个的结果100,所以是输出结果101,修改如下:
    public class CycleSum{
    public static void main(String[] args) { int sum = 0, sum2 = 0;
    for (int i = 1; i <= 100; i++) {
    sum += i;
    }
    System.out.println("使用for语句从一到一百相加结果" + sum); int i = 1;
    while (i <= 100) {
    sum2 += i;
    i++;
    }
    System.out.println("使用while语句从一到一百相加结果" + sum2); int sum3 = 0;
    i=1;
    do {
    sum3 += i;
    i++;
    } while (i <= 100);
    System.out.println("使用do-while语句从一到一百相加结果" + sum3);
    }}
      

  2.   

    当执行到第2个循环后 ,i已经到101了
    因为 int sum3=0先
    do{}
    所以sum3=0+101=101你可以测试下 i的值
    System.out.println("使用while语句从一到一百相加结果"+sum2); 
    后加一句
    System.out.println(i);
      

  3.   

    一二楼说法均有误,一二两个循环结束后i的值已经是101了,而不是100,你可以输出i值看看,当到第三个循环时只执行一步,sum3=0+101=101 
    i=i+1=102;判断不符合条件则推出循环,所以sun会输出101
      

  4.   

    如果你希望得到5050,可以在while循环后重新给i赋值。因为在while循环后,i的值已经是101了。注意,是101,而不是100.
    要注意程序执行的先后顺序。分析逻辑要一步一步的来。就像4楼说的那样。
      

  5.   

    第二个循环结束后i的值已经是101了,当第三个循环时只执行一步,sum3=0+101=101 
    i=i+1=102;判断不符合条件则推出循环,所以sun会输出101 
      

  6.   

    第三个i是从101开始的   do  while   循环强制执行一次   才有输出   不然输出是0勒
      

  7.   

    6楼的说得对,  
    int i=1; 
      while (i <=100){ 
      sum2 += i;i++; 
        } 
    这个时候i++,i就等于101了
      

  8.   

    调试.. 还是变量的作用域没搞明白 .你第⒈个i 是在for循环起作用.for循环结束,那么这个i就不存在了
       然而你第⒉个i是在整个方法中都会存在的;
    第⒉个循环结束的时候i=101, 又因为你第⒊个循环是do-while.  所以sum3=101;不满足i<100所以输出101咯..!