Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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_Eclipse - Fatal编程技术网

Java 异常原因不明

Java 异常原因不明,java,eclipse,Java,Eclipse,每次运行这个程序时,我都会收到一个错误:“线程'main'java.lang.arithmetricException中的异常:/by zero”。我不知道这为什么不起作用 public static void Solve(long num){ for(int x = 1; x < num; x++){ if((num % x) == 0){ //error occurs here System.out.println(x);

每次运行这个程序时,我都会收到一个错误:“线程'main'java.lang.arithmetricException中的异常:/by zero”。我不知道这为什么不起作用

public static void Solve(long num){
    for(int x = 1; x < num; x++){
        if((num % x) == 0){    //error occurs here
            System.out.println(x);
        }
    }
}
publicstaticvoidsolve(long num){
对于(int x=1;x
num
是一个
长的
。当您将
int
long
进行比较(如
x
)时,
int
将升级为
long
。假设您的
num
足够大(大于
int
的最大值),
x
将永远无法到达它,您的
x++
将被执行。在某个时刻,
x
的值将溢出并变为
0

,因为num是一个长数值,如果选择足够大的值,x(仅为int)将溢出。当它这样做时,作为int,它将是零。然后在余数运算中得到零除。

num的值是多少?
?在执行if语句之前,您可以检查正在使用的值,以了解计算中使用的数字这里有公认的答案,但在您的问题中,它说“每次我运行这个”时都会发生。只是想确定一下:它是只发生在num的大值上,还是发生在所有值上?我只测试了大值,所以这就是问题所在。