【问题标题】:How to break from the outer for loop如何打破外部for循环
【发布时间】:2021-12-20 10:37:30
【问题描述】:

此程序将字符串列表逐行拆分。我想在输入“暂停”后停止/终止程序。但是现在它只在单独输入“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;
                    }

                }

            }

        }
    }

【问题讨论】:

    标签: java break terminate


    【解决方案1】:

    只需return;,甚至System.exit(如果你想退出,那么退出,不要试图“很好地”分解调用堆栈。计算机会这样做为您服务,并且会始终如一地做到这一点,而如果您尝试单独突破每一层,您将编写大量代码,并且可能会搞砸)。

    break; 没有任何进一步的参数将找到“最接近的”whiledoforswitch,它包含了 break 语句,并且被认为意味着:打破那个东西。

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

    outer:
    while (true) {
      ...
    
    if (pieces[i].equals("halted")) break outer;
    }
    

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

    【讨论】:

      【解决方案2】:

      你打破的是 for 循环,而不是 while 循环,这就是程序仍在运行的原因,你可以用下面的代码替换 for()

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-11
        • 2012-12-07
        • 1970-01-01
        • 2021-05-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多