每次运行此操作时,都会收到一条错误消息:"线程中的异常' main' java.lang.ArithmeticException:/ 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);
}
}
}
答案 0 :(得分:9)
num
是long
。当您将int
与long
x < num
进行比较时,int
将被提升为long
。假设您的num
足够大(大于int
的最大值),x
将永远无法访问它,您的x++
将被执行。在某些时候,x
的值会溢出并变为0
。
答案 1 :(得分:3)
由于num是long,如果你选择它足够大,x只会是一个int,它会溢出。当它这样做时,作为一个int它将为零。然后你在余数操作中得到零分割。