【问题标题】:How to break through if statement inside a nested loop in java如何在java中的嵌套循环中突破if语句
【发布时间】:2018-08-02 12:07:18
【问题描述】:

在解决 java 上的问题时,我发现无法突破 for 循环内的 if 语句,而这个 for 循环在另一个 if 语句内。代码片段如下:

package experment;
public class myclass_2{
 public static void main(String[] args){
  int t;
  int remaining;
  boolean is_undertaker_dead = false;
  Scanner s = new Scanner(System.in);
  System.out.println("hey");
  t = s.nextInt();
  for(int i=0; i<t; i++)
  {
      String S = Integer.toString(s.nextInt());
      char c[] = S.toCharArray();
      for(int j=0; j<c.length; j++)
      {
          if(c[j]=='2')
          {
              remaining = c.length-j;
              for(int a=j; a<c.length; a++)
              {
                  if(remaining<c.length)
                      {
                      remaining=0;
                  }
                  if(c[j+remaining]=='1')
                  {
                     is_undertaker_dead=true;
                     break;
                  }
                  remaining--;
              }
          }
      }
      if(is_undertaker_dead==true)
      { 
          System.out.println("The Streak is broken!");
      }
      else
      {
          System.out.println("The streak");
      }
  }
 }

一旦调用了 break 语句,我想在所有 for 循环之外中断。我知道这只是脱离了 if 语句,但循环仍在继续。我也尝试使用我在 stackoverflow 和 google 上找到的 label 方法,但它们不知何故不起作用,让我更加困惑。提前感谢您的支持,这意味着很多!

【问题讨论】:

  • “我试过使用标签方法”——你尝试了什么,怎么没用?
  • @sujatha 执行 return 将退出该方法的其余部分,这可能/可能不是他想要的。他可能只想打破方法中的那部分代码。
  • @CDVAProgrammer 然后他需要将他希望能够从中中断的部分放入一个单独的方法中,以便 return 完全符合他的需要。

标签: java label break goto nested-if


【解决方案1】:

首先,break 不会跳出 if 语句,它会跳出循环,在您的情况下是第二个 for 循环。

在您的代码中,break 打破了内部 for 循环。要跳出外部 for 循环,只需将条件置于外部循环的右括号之前

if (is_undertaker_dead)
    break;

【讨论】:

    【解决方案2】:

    在第一个循环之前添加这一行:

    mainloop:
    

    要打破所有循环,请调用它

    break mainloop;
    

    【讨论】:

      【解决方案3】:

      使用带标签的break:

      outerLoop:
      for(int j=0; j<c.length; j++)
        {
            if(c[j]=='2')
            {
                remaining = c.length-j;
                for(int a=j; a<c.length; a++)
                {
                    if(remaining<c.length)
                        {
                        remaining=0;
                    }
                    if(c[j+remaining]=='1')
                    {
                       is_undertaker_dead=true;
                       break outerLoop;
                    }
                    remaining--;
                }
            }
        }
      

      您可以在Java tutorial 中找到更多信息和示例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-19
        • 2017-10-30
        • 1970-01-01
        • 1970-01-01
        • 2015-12-28
        • 2016-10-30
        相关资源
        最近更新 更多