这是一种生成随机数的算法,直到每个数字大于前一个数字的数字。 (例如: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
答案 0 :(得分:1)
您正在检查(或设置)croissant
的错误值。
if (chiffre2 > chiffre1 || chiffre2 == chiffre1) {
croissant = false;
break;
} else {
croissant = true;
}
}
} while (croissant == false);
您将其设置为false,然后只要值为false,则while会继续。
如果你将它设置为true,那么你将退出(并且根本不需要else子句,因为它必须已经为假)。
此处还有其他一些奇怪的事情,例如,您可以只比较>=
而不是>
和==
。
可能还有其他事情,这就是我在快速浏览时看到的内容。我建议使用调试器(IDE内置的任何调试器)并逐步执行代码,因为它一次执行一行,查看它实际上在做什么。