2017-04-07 46 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; 
    } 

执行可悲的是你的问题不是很清楚。也许你可以举个例子来说明条件,例如