【解決方法】N 個の数値の平均を計算する


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.

次に、 sumnum、(明らかに)「ゼロ除算」エラーが発生します。

ユーザーが入力した数字の数を追跡するには、別の変数が必要です。

また、少なくとも除算の片側を浮動小数点数に変換する必要があります。 それ以外の場合、Java は「整数除算」を実行し、整数に収まるように結果を切り捨てます。 たとえば、整数を使用すると、 12 だろう 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);

コメント

タイトルとURLをコピーしました