标题:do-while语句问题
只看楼主
ouyangshan09
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2012-10-17
结帖率:83.33%
已结贴  问题点数:1 回复次数:15 
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 
2012-10-29 10:52
ouyangshan09
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2012-10-17
得分:0 
还有 n++;sum+=n互换 也会影响 最后的结果?  为啥?  运算时按顺序来的么?
2012-10-29 10:54
猎户座的旅行包
Rank: 2
等 级:论坛游民
威 望:1
帖 子:33
专家分:47
注 册:2009-4-2
得分:0 
你把你的结果 好好看看  然后看看do while的循环规则
n++ 与sum+=n位置如果调换的话
必然会影响结果
比如 n=1时候  n++;
               sum+=n;
的运算结果是
n=1
sum=2
换了位置之后 都是1
2012-10-29 14:27
邱威
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:136
专家分:351
注 册:2012-3-28
得分:0 
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;


2012-10-29 16:36
兜兜里有耗子
Rank: 2
等 级:论坛游民
帖 子:16
专家分:18
注 册:2012-10-8
得分:0 
计算机都是一步一步下来的,你换位子必定先执行前面的
2012-10-29 21:51
猪思马记
Rank: 1
来 自:安徽合肥
等 级:新手上路
帖 子:3
专家分:1
注 册:2012-10-29
得分:1 
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;

这样应该了解了吧!

2012-10-29 23:03
ouyangshan09
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2012-10-17
得分:0 
好像明白了一点  吧
2012-10-30 10:07
ouyangshan09
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2012-10-17
得分:0 
但是 n++;不是 先运算 然后再自增一吗?
2012-10-30 10:07
ouyangshan09
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2012-10-17
得分:0 
刚刚在代码试了一下  
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);
    }
}
2012-10-30 10:11
ouyangshan09
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2012-10-17
得分:0 
我是这样想的

n++;先运算后加1.
所要 我先算 sum+=n 然后在算n++;  
2012-10-30 10:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-384796-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.096826 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved