退出嵌套循环

时间:2017-02-11 09:23:29

标签: java arrays for-loop

不确定如何执行此操作,但我在下面有一段代码,我的for循环遍历数组中的每个对象元素并检查if语句中的条件。如果满足if语句的条件,我想退出for循环而不继续迭代其余的数组对象。有没有办法构建我的循环来做到这一点? (假设所有属性都已初始化)

public void remove()
    {
        in = new Scanner(System.in);
        System.out.print("Please enter the destination name to be removed: ");
        nameSearch = in.nextLine();
        for(i=0; i < MAX_ELEMENT; i++)
        {
            temp = aDestination[i].getName;
            if(temp == nameSearch)
            {
                aDestination[i]=null;
            }
        }
    }

3 个答案:

答案 0 :(得分:0)

要实现此目的,您可以使用break关键字,JAVA提供的内容。如下所示:

   public void remove() {
          in = new Scanner(System.in);
          System.out.print("Please enter the destination name to be removed: ");
          nameSearch = in.nextLine();
          for(i=0; i < MAX_ELEMENT; i++) {
                  temp = aDestination[i].getName;
                  if(temp == nameSearch) {
                       aDestination[i]=null;
                       break;
                 }
           }
  }  

一旦条件成立,它将打破当前的运行循环。但是如果你有多个嵌套循环并且在休息时你想要从一些特定的循环中出来,你可以使用Labeled Break。

虽然这不是您的要求,但如果您想了解这一点,可以参考以下教程:

http://www.java-examples.com/java-break-statement-label-example

答案 1 :(得分:0)

使用中断指令,如下所示:

if(temp == nameSearch)
{
     break; // immediatly quit the loop
     aDestination[i]=null;
}

答案 2 :(得分:0)

我假设你想多次调用remove()方法。

以下是对您的正确修改:

public void remove()
    {
        in = new Scanner(System.in);
        System.out.print("Please enter the destination name to be removed: ");
        nameSearch = in.nextLine();
        for(i=0; i < MAX_ELEMENT; i++)
        {
            // we skip removed destination from previous remove() call
            if(aDestination[i]==null) continue;

            temp = aDestination[i].getName;
            // you need to use equals() to compare String in Java
            if(temp.equals(nameSearch))
            {
                aDestination[i]=null;
                break; // to exit from the loop
            }
        }
    }