嵌套的while循环与条件

时间:2016-11-23 17:15:38

标签: java while-loop nested-loops

我正在尝试制作一个打印以下数字的程序:

1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4

代码是

   public class JavaApplication8 {

    public static void main(String[] args) {

        int i = 1;
        int j = 1;

        while (i <= 2 && j <= 4) {

            while (i <= 2 && j <= 4) {

                System.out.printf("%d%d\n", i, j);

                j++;
            }

            j = j - 4;

            i++;

            System.out.printf("%d%d\n", i, j);
            j++;

        }

    }
}

程序打印此

1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4
3 1

我不知道为什么这种情况发生在内部条件背后,同时说它必须小于或等于2

1 个答案:

答案 0 :(得分:2)

它正在输出最终3 1,因为您的最终println声明(如下所示)是无条件的。因此,在将i增加到3之后,您仍然会运行该语句。 while条件仅在之后生效,这就是为什么它在打印后停止的原因。

public class JavaApplication8 {

    public static void main(String[] args) {

        int i = 1;
        int j = 1;

        while (i <= 2 && j <= 4) {

            while (i <= 2 && j <= 4) {

                System.out.printf("%d%d\n", i, j);

                j++;
            }

            j = j - 4;

            i++;

            System.out.printf("%d%d\n", i, j); // <=== This one
            j++;

        }

    }
}

但是整个过程可以简单得多:

public class JavaApplication8 {
    public static void main(String[] args) {
        for (int i = 1; i <= 2; ++i) {
            for (int j = 1; j <= 4; ++j) {
                System.out.printf("%d%d\n", i, j);
            }
        }
    }
}

Live Example