为什么声明无法访问?

时间:2014-11-29 09:14:16

标签: java for-loop

int i = 0, j = 5;   
tp: for (;;) {
    i++;  
    for (;;) {
        if(i > --j) {
            break tp; 
        } 
    } 
    System.out.println("i =" + i + ", j = " + j); //Unreachable statement, why?
}

我认为该语句是可以访问的,因为之前有break语句,因此System.out.println 后面的语句可以正常完成,因为System.out.println是可以访问的。错误在哪里?

4 个答案:

答案 0 :(得分:4)

因为你有两个无限循环。变化

break tp;

break;

这个陈述是可以达到的。

答案 1 :(得分:3)

您的break语句将返回外部循环的开头(tp标签)。这就是为什么你永远无法达到println陈述。

答案 2 :(得分:2)

内环是无限的。如果内部没有任何内容,则应该清楚print无法访问。如果在其中添加break tp,它将破坏封闭循环而不是内部循环,因此语句仍然无法访问。

使用break打破内部循环或使用tp标记内部循环以纠正它。

答案 3 :(得分:2)

您的代码就像

L1 : INFINITE LOOP
 {
  L2 : INFINITE LOOP
  {
    break to  return to L1
  }
  SOP("SOmething")
 }

因此,每当循环L2中断时,它将控制权返回到循环L1并再次启动循环L2。 这将永远持续,控件将永远无法退出循环L2并达到SOP语句,因此SOP语句无法访问。