为什么我要打破;在这里退出循环?

Why do I have to break; out of the loop here?

这是一种生成随机数的算法,直到每个数字都大于前一个数字为止。 (示例:1234、1589 或 6789 NOT 1233 或 1334)然后,它将所有生成的数字打印到控制台上。在添加中断之前,我无法让它显示数字;命令在 if() 中,但为什么?

    public static void numeroNeuf() {

    boolean croissant = false;

    do {
        int entierAleatoire = rnd.nextInt(10000)+1;

        System.out.print(entierAleatoire + " ");

        while (entierAleatoire > 0) {
            int chiffre1 = entierAleatoire % 10;
            entierAleatoire /= 10;
            int chiffre2 = entierAleatoire % 10;

            if (chiffre2 > chiffre1 || chiffre2 == chiffre1) {
                croissant = false;
                break;
            } else {
                croissant = true;
            }
        }
    } while (croissant == false);
}

输出:

1742 8912 1104 7216 7473 3276 3267 8780 7583 2143 8285 7555 6812 1893 2188 5351 5427 780 9211 2618 1605 3719 511 7671 5839 735 654 8075 7989 7702 891 4850 2891 3529 1420 642 2723 7217 1629 9742 9408 3910 2301 6936 3865 193 3221 6343 8505 8268 4489 3872 6643 5017 1367 

您正在检查(或设置)错误的 croissant 值。

        if (chiffre2 > chiffre1 || chiffre2 == chiffre1) {
            croissant = false;
            break;
        } else {
            croissant = true;
        }
    }
} while (croissant == false);

您将其设置为 false,只要值为 false,while 就会继续。

如果您将其设置为 true,那么您将退出(根本不需要 else 子句,因为它必须已经是 false)。

这里还有其他一些奇怪的事情,例如你可以只比较 >= 而不是同时比较 >==.

可能还有其他的,我随便扫了一眼。我建议使用调试器(任何内置于您的 IDE 中的东西)并逐步执行代码,因为它一次执行一行,看看它实际在做什么。