如何在满足条件后从循环中断开

嗨,我一直在尝试过去一小时从这个循环中断,继续,因为已经满足了我的条件一次。 我的应用程序几乎读取了一系列行并分析它然后打印所述的变量。 线条如何显示的示例(不包括。):

  • 10 c = 9 + 3
  • 20 a = c + 1
  • 30打印c
  • 40转到20
  • 50结束

它做的一切正确,当它到达第40行时按预期进入第20行,但我希望它转到第50行,因为已经进入第40行一次。 这是我的这部分代码:

while(booleanValue) { if(aString.substring(0, 4).equals("goto")) { int chosenLine = Integer.parseInt(b.substring(5)); if(inTheVector.contains(chosenLine)) { analizeCommands(inTheVector.indexOf(chosenLine)); i++; } else { System.ou.println("Line Was Not Found"); i++; } } else if(aString.substring(0, 3).equals("end")) { System.out.println("Application Ended"); booleanValue = false; } } 

一旦满足条件,使用break语句完全打破循环。 Pol0nium建议使用continue将不正确,因为它只停止循环的当前迭代。

 while(foo) { if(baz) { // Do something } else { // exit condition met break; } } 

所有这些都说过,良好的forms决定了你想要干净的进入和退出点,以便观察者(也许你自己,以后重新访问代码)可以轻松地遵循它的流程。 考虑改变控制while循环本身的布尔值。

 while(foo) { if(baz) { // Do something } else { // Do something else foo = false; } } 

如果由于某种原因,您无法触摸控制while循环的布尔值,则只需要使用标记复合条件来专门控制您的while:

 while(foo && bar) { if(baz) { // Do something } else { // Do something else bar = false; } } 

您可以按原样使用booleanValue保持代码并切换到do-while循环。

 do { // ... existing code } while (booleanValue); 

但是,要回答您的具体问题 – 您始终可以使用java break关键字。 continue关键字更多用于跳过循环块的其余部分并进入另一个循环迭代。

如果你在检查之前把它放在其他任何东西上,你会立即退出循环。

 if(aString.substring(0, 3).equals("end")) { break; } 

作为附加提示,您可能希望使用String.contains(“end”)或String.endsWith(“end”)而不是substring()。 这样,如果使用1或3位(或更多)数字,您的代码仍然有效。