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
----------------解决方案--------------------------------------------------------
还有 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++;
----------------解决方案--------------------------------------------------------