在Java中适当使用多级中断

时间:2010-06-25 13:28:44

标签: java label switch-statement while-loop

我最近编写了一个小型java程序(作为8086汇编程序的设计)并且我处于一个有趣的位置 - 我需要从内部switch语句中退出while循环,类似这样(伪代码,显然):

:MyLoop
While(foo)
    switch (bar)
       case '1': print '1'; break
       case '0': print '0'; break
       case ';': end while loop;

它似乎是goto语句的理想之处,因为单个“break”只会退出switch语句,(特别是考虑到我是为汇编而设计)但Java没有任何东西!

我发现Java有一个叫做多级中断的东西,所以通过使用“break MyLoop”,程序将突破开关case while循环。 “

我的问题是 - 这是多级休息的恰当用途吗?如果由于某种原因,我想保留开关(而不是嵌套的其他ifs)语句,是否有另一种方法可以通过“break”或“continue”单独模仿多级中断?

3 个答案:

答案 0 :(得分:12)

就我个人而言,我通常会将此视为将循环重构为自己的方法的提示 - 然后您可以从整个方法返回,而不是仅仅突破循环。

我个人觉得在大多数情况下更清楚 - 但除此之外,这正是标记为休息的东西。它通常比具有单独的boolean变量更清晰(IMO),指示是否继续循环。

答案 1 :(得分:2)

  

这是多级休息的恰当用途吗?

  

是否有另一种方法可以通过“休息”或“继续”来模仿多级休息?

你可以设置一个布尔标志,然后在每个级别中断。

答案 2 :(得分:2)

Jon Skeet在代码中的回答:

public void doSomething() {
    while(foo) {
        switch (bar) {
            case '1': print '1'; break;
            case '0': print '0'; break;
            case ';': return; //Effectively exits the loop
        }
    }
}