[ad_1]
Java
Scanner sc = new Scanner(System.in); int num; int sum = 0; do { System.out.println("Enter the number: "); num = sc.nextInt(); sum += num; System.out.println("Enter 0 to end the loop: "); }while (num != 0); System.out.println("sum is "+sum); int avg = sum / num; System.out.println("average is "+avg);
私が試したこと:
ユーザーが入力した数値の平均値を取得できません
表示しています」
Exception in thread "main" java.lang.ArithmeticException: / by zero
”
解決策 1
あなたのループはいつ終了しますか num
に等しい 0
.
次に、 sum
に num
、(明らかに)「ゼロ除算」エラーが発生します。
ユーザーが入力した数字の数を追跡するには、別の変数が必要です。
また、少なくとも除算の片側を浮動小数点数に変換する必要があります。 それ以外の場合、Java は「整数除算」を実行し、整数に収まるように結果を切り捨てます。 たとえば、整数を使用すると、 1
と 2
だろう 1
、これは明らかに正しくありません。
解決策 2
見積もり:ユーザーが入力した数値の平均値を取得できません
ユーザーが入力した値の数を数える必要があります。num
はユーザー入力のみであり、ユーザーはループを終了するために 0 を入力しました。
解決策 3
やあ、
まず、コードにエラーがあります。
の平均 n
数値は、この数値のカウントで割った合計になります。
したがって、プログラムは最後に入力されたゼロでハングします。
以下のように書き直していただきたい。
Java
Scanner sc = new Scanner(System.in); int num; int sum = 0; int count = 0; do { System.out.println("Enter the number: "); num = sc.nextInt(); sum += num; System.out.println("Enter 0 to end the loop: "); if (num != 0) count = count + 1; }while (num != 0); System.out.println("sum is "+sum); float avg = sum; if (count > 0) avg = avg / count; System.out.println("average is "+avg);
[ad_2]
コメント