如何在java中突破嵌套循环中的if语句

如何在java中突破嵌套循环中的if语句,java,label,break,goto,nested-if,Java,Label,Break,Goto,Nested If,在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); Sy

在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");
      }
  }
 }
包装实验;
公共类myclass_2{
公共静态void main(字符串[]args){
int t;
剩余整数;
布尔值为_dead=false;
扫描仪s=新的扫描仪(System.in);
System.out.println(“嘿”);
t=s.nextInt();

对于(inti=0;i首先,
break
不会中断if语句,它会中断循环,在您的例子中,第二个
用于
循环

在您的代码中,
break
从内部
for
循环中断开。要断开外部for循环,只需在外部循环的闭合括号之前,将以下条件置于下方即可

if (is_undertaker_dead)
    break;

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

mainloop:
为了打破所有的循环,把这个叫做

break mainloop;

使用带标签的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--;
          }
      }
  }
outerLoop:

对于(int j=0;j)“我尝试使用label方法”-你尝试了什么,它怎么不起作用?@sujatha做return会退出方法的其余部分,这可能不是他想要的。他可能只想在方法中突破那一段代码。@CDVAProgrammer然后他需要将他想要突破的部分放在一个单独的方法中,以便返回做他需要做的事。