如何从while循环内部的if条件中跳出while循环?

23

我想要打破以下格式的while循环,其中包含一个if语句。如果该if语句为真,那么while循环也必须被打破。任何帮助将不胜感激。

while(something.hasnext()) {
   do something...
   if(contains something to process){
      do something
      break if condition and while loop
   }
}

3
你在问题中已经说出了答案! - Josef E.
如果循环中断,break语句可以使用。一个do while循环让我感到困惑,我以为有两个循环。 - Braj
你不能说 if(true){break;} - Braj
3个回答

54

break 关键词确切地执行了这个操作。下面是一个人为制造的例子:

public static void main(String[] args) {
  int i = 0;
  while (i++ < 10) {
    if (i == 5) break;
  }
  System.out.println(i); //prints 5
}

如果您实际上正在使用嵌套循环,那么您将能够使用标签


@Codelearn14 你能发布一些代码示例来证明你所说的吗?也许if条件从未被满足,阻止了break被调用。 - Pshemo
@Codelearn14 我已经添加了一个简单的示例,您可以运行以确认其行为。 - assylias
是的,它出问题了。我的程序扫描一个包含所有美国邮编、城市名称的邮编文件,并将其与包含一些城市的另一个文件进行匹配。如果找到匹配项,将该邮编和城市插入到MySQL数据库中。但问题是,一旦它将大约30000个邮编与另一个文件中的500个城市匹配,之后就会变得非常缓慢。因此,我想使用break语句在找到匹配项后中断循环,并开始为下一个邮编再次匹配。但仍然没有用。程序仍然很慢。 - SuperCoder
@Codelearn14 这被称为XY问题。为什么不提出一个(新的)问题,详细说明您实际遇到的问题,您已经做了什么(包括相关的代码示例),以及为什么它不能按预期工作? - assylias
3
我真希望@Codelearn14没有删除他们的评论,因为这个争论看起来很有趣。 - John R Perry
显示剩余2条评论

9
一个“if”语句不是一个循环。只需在“if”内部使用break,它就会跳出while循环。
如果您需要使用真正的嵌套循环,Java有标签中断的概念。您可以在循环之前放置一个标签,然后使用标签名称作为参数来中断。它将在标记循环外中断。

7
while(something.hasnext())
do something...
   if(contains something to process){
      do something...
      break;
   }
}

只需使用 break 语句;

例如:这将仅打印“Breaking…”

while (true) {
     if (true) {
         System.out.println("Breaking...");
         break;
     }
     System.out.println("Did this print?");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接