如何在Java

时间:2018-08-02 12:07:18

标签: 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);
  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方法,但是它们以某种方式不起作用并使我更加困惑。预先感谢您的支持,这非常重要!

3 个答案:

答案 0 :(得分:1)

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

在您的代码中,break脱离了内部for循环。要突破外部for循环,只需将以下条件置于外部循环的右括号之前

if (is_undertaker_dead)
    break;

答案 1 :(得分:0)

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

mainloop:

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

break mainloop;

答案 2 :(得分:0)

使用标记的中断版本:

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中找到更多信息和示例。