如何从外部 for 循环中跳出

How to break from the outer for loop

此程序将字符串列表逐行拆分。我想 stop/terminate 输入“暂停”后的程序。但现在它仅在单独输入“halted”时终止,而不是在字符串列表中时终止。非常感谢任何帮助:)

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter words ");

        while (true) {
            String userText = scanner.nextLine();

            if (userText.equals("halted")) {

                break;
            }

            else {
                String[] pieces = userText.split(" ");

                for (int i = 0; i < pieces.length; i++) {
                    System.out.println(pieces[i]);

                    if (pieces[i].equals("halted")) {
                        System.out.println(" Stop Program...");
                        break;
                    }

                }

            }

        }
    }

你打破了 for 循环,而不是 while 循环,这就是为什么程序仍然 运行,你可以用下面的代码替换 for()

if (Arrays.asList(pieces).contains("halted")){
    System.out.println(" Stop Program...");
    break;
}

只是return;代替,甚至System.exit(如果你想退出,那么退出,不要试图分解调用堆栈'nicely'。计算机会为你做,而且会一直做下去,而如果你试图单独突破每一层,你会写很多代码,你可能会把它搞砸)。

break; 没有任何进一步的参数将找到包含中断的 'closest'、whiledoforswitch声明,并被认为是:打破那件事。

您可以使用带标签的中断来中断任何可以用大括号括起的语句或表达式:

outer:
while (true) {
  ...

if (pieces[i].equals("halted")) break outer;
}

虽然这里的代码风格不好,只是 return;.