2017-04-07 44 views
-3

當條件爲假時,如何停止每個循環的繼續進行?因爲當集合中的所有對象都符合條件時,我只能讓x = newX。謝謝你的幫助。休息不會有幫助,我試過了。一旦遇到條件,你如何在循環中停止搜索

for (char h : collection){ 
    if (condition == false) 
    { 

    } 
    else{ 
     x = newX; 
    } 
} 
+0

使用break;退出循環 –

+3

'break'將有所幫助。這是擺脫循環的標準方式(因此名稱)。 – Kayaman

+2

「休息不會,我試過」。它確實有幫助。如果這不是你想要的,那麼請解釋一下。 –

回答

0

最簡單的方法是使用break語句。但是,只有在列表中的所有元素都通過某些條件時纔想設置新的x值。

boolean allMatch = true; 
for (char h : collection) { 
    if (!condition) { 
     allMatch = false; 
     break; 
    } 
} 
if (allMatch) { 
    x = newX; 
} 

如果你想檢查是否SOF循環中的所有元素都匹配,你可以使用Java 8功能的一些條件:

boolean allMatch = list.stream().allMatch(element -> condition); 
if (allMatch) { 
    x = newX; 
} 
+0

'allMatch = allMatch && condition;'這一行是不必要的。在第一個if語句中放入'allMatch = condition'或甚至'allMatch = false'就足夠了。 –

+0

是的,但是,爲什麼更新每個循環中的值?只有在條件不匹配的情況下才能做到這一點。 – Beri

+0

你的意思是哪個值?如果你的意思是'allMatch',那正是我指出要避免的。因爲**現在**它沒有更新任何迭代,只是在最後(在「break」之前)。 –

1

使用break;聲明break時,如果條件爲真。

for (char h : collection) { 
    if (condition == false) { 
     break; 
    } else { 
     x = newX; 
    } 
} 
0

break語句退出循環。因此

你舉的例子是這樣的:

for (char h : collection){ 
    if (condition == false) 
    { 
     break; 
    } 
    else{ 
     x = newX; 
    } 
} 

瞭解更多關於在official documentation break語句。

0

使用break;關鍵字。

它會最終打破循環,並在條件滿足後退出!

1

也許你可以用一個標誌工作,如果else塊只需要進行一次

boolean test=true; 
    for (char h : collection) { 
     if (condition == false) { 
      test=false; 
      break; 
     } 
    } 
    if(test){ 
     x=newX; 
    } 

執行可悲的是你的問題不是很清楚。也許你可以舉個例子來說明條件,例如