我最近编写了一个小型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”单独模仿多级中断?
答案 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
}
}
}