java循环语句中break输出问题

关于for循环中break带标签的程序输出问题。为什么出书的坐标里面没有(2,3)?

img

因为 break label1;就是跳出外侧循环了,大循环都结束了
此时x y 是都是2
至于2,3还没有循环到,自然就不会输出了。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这篇文章:java中用break跳出多重循环
  • 除此之外, 这篇博客: Java中循环语句的用法及嵌套中的  break关键字 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    我们使用for循环while循环可以让程序重复执行代码.但是有时候我们可能在循环的中途需要让循环结束执行.需要使用break关键字。

    break使用场景:跳出循环,让循环提前结束

  • 以下回答来自chatgpt:

    问题分析:

    在给定的代码中,使用了带标签的break语句来跳出外层循环。目标是在i等于2且j等于3时跳出外层循环,即跳出outerLoop循环。但是在实际的输出结果中,并没有包含(2,3)这个坐标点。

    问题解答:

    在Java中,多重循环中使用带标签的break语句,可以在内层循环中使用带标签的break语句来跳出最外层的循环。

    在给定的代码中,我们可以注意到,跳出外层循环的条件是当i等于2且j等于3时,执行break outerLoop;语句。但是我们可以看到,当i等于2时,内层循环会执行两次,j的值分别为0和1。所以当j等于3时,外层循环已经结束了,不会再进行下一轮循环,因此(2,3)这个坐标点没有被输出。

    解决该问题的方法是将条件改为i等于1且j等于1,修改后的代码如下所示:

    public class Main {
        public static void main(String[] args) {
            int[][] coordinates = {
                    {1, 2},
                    {1, 3},
                    {2, 3},
                    {3, 4},
                    {4, 5}
            };
    
            outerLoop:
            for (int i = 0; i < coordinates.length; i++) {
                for (int j = 0; j < coordinates[i].length; j++) {
                    if (i == 1 && j == 1) {
                        break outerLoop;
                    }
                    System.out.println("Coordinate: (" + coordinates[i][j] + ")");
                }
            }
        }
    }
    

    修改后的代码会输出以下结果:

    Coordinate: (1)
    Coordinate: (2)
    Coordinate: (1)
    Coordinate: (3)
    

    可以看到,(2,3)这个坐标点被成功输出了。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^