首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"exception in thread main / by zero“错误

"exception in thread main / by zero“错误
EN

Stack Overflow用户
提问于 2018-10-12 20:41:35
回答 3查看 50关注 0票数 1

我的完全数程序有一个错误"exception in thread main / by zero“,有人能帮我找出错误吗?

代码语言:javascript
复制
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");
    }
}
EN

回答 3

Stack Overflow用户

发布于 2018-10-12 20:48:28

当你调用while (rem != 0)并且如果是rem == 1的时候,减去它将是0,因此你不能除法。

因此,将while (rem != 0)更改为while (rem > 1),它应该可以工作。

票数 0
EN

Stack Overflow用户

发布于 2018-10-12 20:52:37

如果你知道这个%符号找到了左数字除以右数字的提示,那么你应该检查一下右数字是否为零,它会引发这个错误,所以在你的程序中,rem变量在你找到提示之前会减少,因为每次在循环结束时这个错误都会发生,所以你可以通过将rem--;语句的位置改为循环的末尾来解决这个问题:-

代码语言:javascript
复制
while (rem != 0) {
    if (num % rem == 0) {
        sum = sum + rem;
    }
    rem--;
}

因此,当rem的值为0时,这一次循环不会重复。

票数 0
EN

Stack Overflow用户

发布于 2018-10-12 21:02:44

在第6次循环的代码中,rem变量的值是1,因此您的while循环条件将变为true。

在while循环中,余数变量减少为零,代码(num%rem ==0)将导致除以零错误,因为%运算符从2个变量中查找余数,而在当前情况下,被除数为零。因此,代码将抛出除以零异常。

将while循环条件更改为while (rem >1)

在上面提到的更改之后,您的代码如下所示。

代码语言:javascript
复制
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");
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52779778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档