日期:2014-05-19  浏览次数:20739 次

JAVA新手 求帮忙解决下 for语句双重循环 不懂了。
public class Test3{
public static void main(String[] args){
 int sum=0;
outer:
 for(int i=1;i<100;i++){
inner:
  for(int j=1;j<3;j++){
sum+=j;//sum=sum+j
if(i+j>6)
break outer;

}
System.out.println("sum="+sum);
}
}
 我自己是这样理解的 sum=sum+j; j小于3 sum为1+2 sum最多就为3 电脑出的结果我蒙了 不知道怎么来的...

------解决方案--------------------
你从这个判断也可以看出:

if(i+j>6)
break outer;

j最大到2,也就是说i要 >=4 时才有break的发生;

------解决方案--------------------
只有到i = 5时才会出现i+j大于6的情况,此时正好完成5次循环相加,每次循环sum都加3
故得到15,break outer后不会再执行outer中,就输出了15
------解决方案--------------------
i=1时 1+2
i=2时 1+2+1+2
i=3时 1+2+1+2+1+2
i=4时 1+2+1+2+1+2+1+2
i=5时 1+2+1+2+1+2+1+2+1+2 if(i+j>6) 此时i+j=7,执行break outer;
跳出总的for循环
------解决方案--------------------
continue outer 标签:
前面i<6时运算过程一样
i=6时,j=1,sum+;然后跳出内层循环(不执行j=2),
继续执行i=7,同理sum+;i=8,sum+……