我的完全数程序有一个错误"exception in thread main / by zero“,有人能帮我找出错误吗?
public static void main(String[] args) {
int num = 6, sum = 0, rem = num;
while (rem != 0) {
rem--;
if (num % rem == 0) {
sum = sum + rem;
}
}
if (sum == num) {
System.out.println("It is a perfect number");
} else {
System.out.println("It is not a perfect number");
}
}发布于 2018-10-12 20:48:28
当你调用while (rem != 0)并且如果是rem == 1的时候,减去它将是0,因此你不能除法。
因此,将while (rem != 0)更改为while (rem > 1),它应该可以工作。
发布于 2018-10-12 20:52:37
如果你知道这个%符号找到了左数字除以右数字的提示,那么你应该检查一下右数字是否为零,它会引发这个错误,所以在你的程序中,rem变量在你找到提示之前会减少,因为每次在循环结束时这个错误都会发生,所以你可以通过将rem--;语句的位置改为循环的末尾来解决这个问题:-
while (rem != 0) {
if (num % rem == 0) {
sum = sum + rem;
}
rem--;
}因此,当rem的值为0时,这一次循环不会重复。
发布于 2018-10-12 21:02:44
在第6次循环的代码中,rem变量的值是1,因此您的while循环条件将变为true。
在while循环中,余数变量减少为零,代码(num%rem ==0)将导致除以零错误,因为%运算符从2个变量中查找余数,而在当前情况下,被除数为零。因此,代码将抛出除以零异常。
将while循环条件更改为while (rem >1)
在上面提到的更改之后,您的代码如下所示。
public static void main(String[] args) {
int num = 6, sum = 0, rem = num;
while (rem > 1) {
rem--;
if (num % rem == 0) {
sum = sum + rem;
}
}
if (sum == num) {
System.out.println("It is a perfect number");
} else {
System.out.println("It is not a perfect number");
}
}https://stackoverflow.com/questions/52779778
复制相似问题