关于嵌套循环的问题

来源:百度知道 编辑:UC知道 时间:2024/06/19 20:16:06
小女子刚刚学习Java,有个问题还不明白。

public class ex40{
public static main[String[] args]{
int a=0,b=0;
do{
b++;
for(int i=5;i>b;i--)
a=a+(i+b);
}while(b<=10);
}
}
卷子上的答案是:(D)60,可是我真是不太明白。关键是:a=a+(i+b)这个,谢谢

要理解a=a+(i+b),楼主只需要理解a=a+1(简写为a+=1)的含义,意思是把a代表的内存单元中的数取出来,加上1,再填入a代表的内存单元,这样a代表的内存单元中的数就变为原来的值加1.
a=a+(i+b) 就是先进行i+b操作(括号的优先级大),得到和,再与a相加,得到的和值再赋予变量a,可见a的值比原来大(i+b).

答案是60的解释:
双循环中的for循环,初值是i=5,结束条件是i>b,可见当b>=5时,for循环将不会执行。因此只需计算b=1,2,3,4时的情况
b=1
a=0+(5+1)+(4+1)+(3+1)+(2+1)=18

b=2
a=18+(5+2)+(4+2)+(3+2)=36

b=3
a=36+(5+3)+(4+3)=51

b=4
a=51+(5+4)=60

do while 循环是先执行语句,在判断循环条件是否成立.

首先进入第一次while循环中的for循环
第一次:b++ [b=1],a=a+(i+b) [a=0+(5+1)=6]

第二次: b++ [b=1],a=a+(i+b)[a=6+(4+1)=11]
第三次:b++ [b=1],a=a+(i+b)[a=11+(3+1)=15]
第四次:b++ [b=1],a=a+(i+b)[a=15+(2+1)=18]
第五次:因为i=b=1,不符合i>b,故第一次while循环中的for循环结束,进入第二次while循环.

下面的你应该会了吧

a=a+(i+b)
把a+(i+b)的值计算出来再赋给a
下次循环运行到这里的时候,a就会以这个新的值继续参与运算