簡體   English   中英

不符合條件的嵌套while循環

[英]nested while-loop that doesn't match the condition

我正在嘗試制作一個打印以下數字的程序:

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

由於最后的println語句(如下所示)是無條件的,因此將輸出最后的3 1 因此,將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);
            }
        }
    }
}

現場例子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM