2013-04-29 119 views
1

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

  • 10 C = 9 + 3
  • 20 = C + 1
  • 30打印Ç
  • 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; 
     } 
} 
+0

小改进:你可以用'aString.startsWith(“goto”)'替换'aString.substring(0,4).equals(“goto”)'。它对于短于4个字符的字符串更具可读性和安全性。 – Pshemo 2013-04-29 00:30:21

+0

您需要一个命令来说'if statement'并对其进行评估。 – 2013-04-29 00:30:29

+0

也许'继续'关键字会工作? – Pol0nium 2013-04-29 00:30:29

回答

3

使用break语句来跳出循环的完全一旦你的条件已经得到满足。 Pol0nium建议使用continue将不正确,因为这样会停止当前循环的迭代。

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

这一切都已经说好形式决定了你要清洁的入口和出口,使得观察者(也许你自己,在以后的日子重温代码)可以轻松地跟踪它的流。考虑改变控制while循环本身的布尔值。

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

如果由于某种原因,你不能碰,控制while循环布尔,你只需要化合物的条件与标志专门来控制你,而:

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

你可以保持原样使用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")代替子串的()。这样,如果使用1或3位(或更多)数字,您的代码仍然可以工作。

+0

它保持循环即使我使用同时。问题在于它没有进入第50行,它始终在第20行和第40行之间循环。 – user2252310 2013-04-29 16:32:26

相关问题