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: / by zero
25行目(私のforループ条件)を参照してください。
数字の値を int に型キャストするまでは、ループは正常に機能していましたが、ループの一部で何かがゼロで除算される理由がよくわかりません。有理式を使用する条件に関するすべての可能性を検討しましたが、分母がゼロに設定される不測の事態を推測することはできません。入力した数字に関係なく、このエラーが発生します。私の教授が彼のテストケースの 1 つで int 内に格納できる値を超える値を提供したという事実がなければ、number を double として保存することを選択しなかったでしょう。プログラムは、型キャストの前に正常に実行され、他のすべてのテスト ケースに対して正しい答えを提供しました。