未知的异常原因

时间:2014-08-26 22:42:18

标签: java eclipse

每次运行此操作时,都会收到一条错误消息:"线程中的异常' 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);
        }
    }
}

2 个答案:

答案 0 :(得分:9)

numlong。当您将intlong x < num进行比较时,int将被提升为long。假设您的num足够大(大于int的最大值),x将永远无法访问它,您的x++将被执行。在某些时候,x的值会溢出并变为0

答案 1 :(得分:3)

由于num是long,如果你选择它足够大,x只会是一个int,它会溢出。当它这样做时,作为一个int它将为零。然后你在余数操作中得到零分割。