import java.util.Scanner;
public class SumDigits {
public static void main(String[] args)
{
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
// prompt the user to enter a value and store it as the integer called number
System.out.print("Enter an integer: ");
double number = Math.abs(input.nextDouble());
System.out.println("The sum of the digits is " + sumNumbers(number));
input.close();
}
public static int sumNumbers (double number)
{
int sum = 0;
for (int i = 10, digit = 0; (number * 10) /i !=0; i *= 10, digit = (int)((number % i) - digit)/(i / 10))
{
sum += digit;
}
return sum;
}
}
在运行时,我收到错误消息
线程“主”java.lang.ArithmeticException 中的异常:/ 为零
参考第 25 行(我的 for 循环条件)。
在我尝试将数字的值类型转换为 int 之前,循环运行良好,我不确定为什么这会导致循环的任何部分将某个值除以零。我已经研究了有关使用有理表达式的条件的所有可能性,并且无法推断出任何分母都将设置为零的偶然性。无论输入什么数字,我都会收到此错误。如果不是因为我的教授提供的数字的值超过了他的一个测试用例中可以存储在 int 中的数字,我根本不会选择将数字保存为双精度数。该程序在类型转换之前运行良好,并为所有其他测试用例提供了正确答案。