public class Test {
public static void main(String[] args) {
outer:for(int i=1;i<=5;i++){
System.out.println("i="+i);
inner:for(int j=1;j<=i;j++){
System.out.println("j="+j);
if(j%2==0)
break outer;
}
}
}
}
输出为:
i=1
j=1
i=2
j=1
j=2
为什么i 只循环到第2次呢?

解决方案 »

  1.   

    break 不是退出循环了么
      

  2.   

    i=1 循环 j=i---j=1 不执行break  i=2  j=2 执行break
      

  3.   

    使用的是带标签的break:break outer,跳到外层循环语句了结果只执行了 i=1和i=2时对j的判断,为什么i=3,4,5没执行呢?
      

  4.   

    不应该用break,你还想把i迭代下去的话,应该用continue,所以把你那句break outer改成continue outer就可以了
      

  5.   

    break带标签是指,当if条件满足退出标签到break范围内的所有循环。
    此时你的例子:当外层循环至i=2的时候,内层循环就if条件就满足,执行if语句块代码break,由于你指定了break到第一层循环,故而整个双重循环结束。'
    如果你将:break outer;改为:break inner; 或break;就是指终止内层循环。外层循环继续。
      

  6.   

    带标签的break,退出break后面指定的循环