Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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 在此代码中,错误显示为;除零“;,用于while循环内的条件。为什么会这样?_Java_Loops_While Loop - Fatal编程技术网

Java 在此代码中,错误显示为;除零“;,用于while循环内的条件。为什么会这样?

Java 在此代码中,错误显示为;除零“;,用于while循环内的条件。为什么会这样?,java,loops,while-loop,Java,Loops,While Loop,这里,当我在循环中添加System.out.println(j)时,初始数字是随机的,接下来的输出是400000的巨大值 j的值初始化为1,而循环是否会计算所有int值,除非另有说明 在正常情况下,可以退出循环的唯一方法是,如果num变为0。但是您从未将num重新分配给任何其他数字,因此它总是31,因此循环不会结束(以常规方式) 但是,在循环中,每次通过时,您都会增加jj被声明为int。ints定义了最大值,然后它们变为最小值,所以从最大(正)数开始,再增加一次后,就得到了最小(负)数。然后你数

这里,当我在循环中添加System.out.println(j)时,初始数字是随机的,接下来的输出是400000的巨大值 j的值初始化为1,而循环是否会计算所有int值,除非另有说明


在正常情况下,可以退出循环的唯一方法是,如果
num
变为
0
。但是您从未将
num
重新分配给任何其他数字,因此它总是
31
,因此循环不会结束(以常规方式)

但是,在循环中,每次通过时,您都会增加
j
j
被声明为int。
int
s定义了最大值,然后它们变为最小值,所以从最大(正)数开始,再增加一次后,就得到了最小(负)数。然后你数到
0
。然后当应用程序试图除以
0
时抛出异常。 (见此处:)

您之所以将
400000
视为第一个显示值,是因为循环速度太快,控制台无法优雅地处理它,并且您只能看到一些显示的输出


不确定您试图实现什么,但为了使此程序以不同的方式工作,请更改循环条件或在内部添加
break
语句-如注释中所述。

Java对Javascript就像痛苦对绘画一样,Ham对仓鼠一样。他们完全不同。强烈建议有抱负的程序员尝试学习他们试图编写代码的语言的名称。当您发布问题时,请适当地标记它-这可以让那些了解您需要帮助的语言的人看到您的问题。
num
的值永远不会更改,因此程序将永远运行。@Pointy不会永远运行。当
j
达到0时,它将出错。while循环将继续,直到循环条件变为false,或者由于break语句,循环提前结束。
public static void main(String[] args) {
    int num = 31;
    int j = 1, c = 0;
    while (num != 0) {
        //System.out.println(j);
        if (num % j == 0) {
            c += j;
        }
        j++;
    }
    System.out.println(c);
}