2013-04-29 117 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

相關問題