Java.lang.arithmetric查找数字的倍数时发生异常

Java.lang.arithmetric查找数字的倍数时发生异常,java,loops,Java,Loops,我试图找到被输入的数字的倍数,但每次用户输入0,我都会得到这个错误 Exception in thread "main" java.lang.ArithmeticException: / by zero 是的,我知道你不能被零除,但必须有一种方法让它工作 即使输入了零,这仍然可以工作 public static int prob1Rec(int num1, int num2) { int sum = 0; for (int i = 1; i < 500

我试图找到被输入的数字的倍数,但每次用户输入0,我都会得到这个错误

Exception in thread "main" java.lang.ArithmeticException: / by zero
是的,我知道你不能被零除,但必须有一种方法让它工作

即使输入了零,这仍然可以工作

 public static int prob1Rec(int num1, int num2) {

        int sum = 0;
        for (int i = 1; i < 500; i++) {
            if ((i % num1 == 0) || (i % num2 == 0)) {
                sum += i;
            }
        }
        return sum;
    }
公共静态int-prob1Rec(int-num1,int-num2){
整数和=0;
对于(int i=1;i<500;i++){
如果((i%num1==0)| |(i%num2==0)){
总和+=i;
}
}
回报金额;
}

注意:如果其中一个数字为零,我仍然希望将另一个数字的倍数相加。

您可以将
If
更改为

if ((num1 != 0 && i % num1 == 0) || (num2 != 0 && i % num2 == 0)) {

表达式
i%num1
执行除法运算,因此代码不安全

将此行添加为方法的第一行:

if (num1 == 0 || num2 == 0)
    return 0;

为什么你认为它应该起作用?为什么不检查0并做些其他事情呢?将for的
循环放入
if
if(num1!=0&&num2!=0){…}
否。如果其中一个数字为零,大概我们还是想把其他数字的倍数相加。我做了这个,还有其他人提到的所有事情,但教授说结果应该是57918,但我想我会投票选你的答案,因为我相信教授犯了一个错误或什么的。教授认为什么样的输入会给你57918的输出?他正是他所要求的:如果你列出所有大于0小于10的整数,它们是3或5的倍数,你会得到3、5、6和9。这些数字之和是23。求所有小于500的3或5的倍数之和。在驱动程序中,他有以下内容:System.out.println(“Testing prob1Rec()。应该打印57918:”;系统输出println(PS7.prob1Rec(0,1));我还得到了57918。如果你不明白,你就做错了。我把你说的If语句添加到我已经有的代码中,我不明白,不知道为什么