Java 异常原因不明
每次运行这个程序时,我都会收到一个错误:“线程'main'java.lang.arithmetricException中的异常:/by zero”。我不知道这为什么不起作用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);
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的大值上,还是发生在所有值上?我只测试了大值,所以这就是问题所在。