Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我要分手;不在这里?_Java_Loops_Break_Do While - Fatal编程技术网

Java 为什么我要分手;不在这里?

Java 为什么我要分手;不在这里?,java,loops,break,do-while,Java,Loops,Break,Do While,这是一种生成随机数的算法,直到一个数字的每一位都大于前一位。(例如:1234、1589或6789而不是1233或1334)然后,它将生成的所有数字打印到控制台上。我无法让它显示数字,直到我添加了中断;if()中的命令,但为什么 public static void numeroNeuf() { boolean croissant = false; do { int entierAleatoire = rnd.nextInt(10000)+1;

这是一种生成随机数的算法,直到一个数字的每一位都大于前一位。(例如:1234、1589或6789而不是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 
您正在检查(或设置)牛角面包的错误值

        if (chiffre2 > chiffre1 || chiffre2 == chiffre1) {
            croissant = false;
            break;
        } else {
            croissant = true;
        }
    }
} while (croissant == false);
将其设置为false,然后只要该值为false,while就会继续

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

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


很可能还有其他事情,这正是我快速浏览时看到的。我建议使用调试器(IDE中内置的任何调试器),并在代码每次执行一行时逐步检查代码,查看它实际执行的操作。

因为如果不设置中断,条件EnteralEatOire>0始终为真,因此需要中断以取出内部代码,然后转到do while并打印System.out.print(EnteralEaToire+“”);谢谢你的快速回复。我是一名Java程序员初学者(大学一年级),因此我犯了一些愚蠢的错误:)是的,你说得对。正如我所说,我只是快速扫描了一下:)