当前位置: 代码迷 >> Java相关 >> do-while语句问题
  详细解决方案

do-while语句问题

热度:140   发布时间:2012-10-29 10:52:59.0
do-while语句问题
public class exam
{
    public static void main(String[] args)
    {
        int n=0;
        int sum=0;
        do
        {
            n++;    //先使用后+1
            sum+=n;    //sum=sum+n
        }
        while(sum<10)   
        System.out.println("sum="+sum);
        System.out.println("n="+n);
    }
}

为什么结果是 n=4 sum=10  自己算出来的是n=5,sum=10
搜索更多相关的解决方案: public  void  

----------------解决方案--------------------------------------------------------
还有 n++;sum+=n互换 也会影响 最后的结果?  为啥?  运算时按顺序来的么?
----------------解决方案--------------------------------------------------------
你把你的结果 好好看看  然后看看do while的循环规则
n++ 与sum+=n位置如果调换的话
必然会影响结果
比如 n=1时候  n++;
               sum+=n;
的运算结果是
n=1
sum=2
换了位置之后 都是1
----------------解决方案--------------------------------------------------------
n=1 --> sum=1
n=2 --> sum=3
n=3 --> sum=6
n=4 --> sum=10
这应该没问题吧?
(sum<10)本来在这次就结束了的,但是do - while 已经在n=4时执行了,
所以就是n=4,sum=10;



----------------解决方案--------------------------------------------------------
计算机都是一步一步下来的,你换位子必定先执行前面的
----------------解决方案--------------------------------------------------------
public class exam
{
    public static void main(String[] args)
    {
        int n=0;
        int sum=0;
        do
        { n++;    //1
          sum+=n;    //2      
        }
        while(sum<10) // 3  
        System.out.println("sum="+sum);
        System.out.println("n="+n);
    }
}
执行顺序是1,2当3成立时继续执行1,2....至到3不成立退出循环
所以执行步骤是:
1、n++  sum+=n -->n=1  sum=1    sum<10成立
2、n++  sum+=n -->n=2  sum=3    sum<10成立
3、n++  sum+=n -->n=3  sum=6    sum<10成立
4、n++  sum+=n -->n=4  sum=10   sum<10不成立   跳出循环
则n=4  sum=10;

如果n++  和sum+=n 调换过来的化执行步骤就变成了
1、sum+=n  n++  -->sum=0 n=1     sum<10成立
2、sum+=n  n++  -->sum=1  n=2    sum<10成立
3、sum+=n  n++  -->sum=3  n=3    sum<10成立
4、sum+=n  n++  -->sum=6  n=4    sum<10成立
5、sum+=n  n++  -->sum=10 n=5    sum<10不成立 跳出循环
则sum=10   n=5;

这样应该了解了吧!


----------------解决方案--------------------------------------------------------
好像明白了一点  吧
----------------解决方案--------------------------------------------------------
但是 n++;不是 先运算 然后再自增一吗?
----------------解决方案--------------------------------------------------------
刚刚在代码试了一下  
public class exam
{
    public static void main(String[] args)
    {
        int n=0;
        int sum=0;
        do
        {
            n++;  //这里试了一下不管是n++; 还是++n;都不影响最后的结果?  两个不是不同的吗?
            sum+=n;
        }
        while(sum<10);
        System.out.print("\tn="+n);
        System.out.print("\tsum="+sum);
    }
}

----------------解决方案--------------------------------------------------------
我是这样想的

n++;先运算后加1.
所要 我先算 sum+=n 然后在算n++;  

----------------解决方案--------------------------------------------------------
  相关解决方案