私は2つのプログラムを持っています:
Score.java は次のように設定されています。
- キーボードからスコアを読み取り、その平均を出力します。
- スコアは数値で、小数部分が含まれる場合があります。
たとえば、スコアは 8.73 などです。異なるコンテストには、異なる数の審査員がいます。ユーザーが「完了」と入力するまで、スコアを求めて読み込み続けます。次に、プログラムは合計スコア、スコアの数、および平均スコアを出力します。次に、プログラムはユーザーに、さらに競技者がいるかどうかを確認するように求めます。スコアのプロンプトが再び表示される場合があります。それ以上ない場合はプログラムを終了してください。"N"を入力するとプログラムを停止するように設定し、"Y"を入力すると将来のエントリを計算に追加するように設定しました。
import java.util.Scanner;
// This is the Score program
// Written by me
public class Score
{
    public static void main(String args[])
    {
        Scanner game = new Scanner(System.in);
        double num = 0.0;
        double sum = 0.0;
        int cnt = 0;
        while (true)
        {
            System.out.println("Enter as many non-negative integers as you like ");
            System.out.println("one at a time and I will find the average");
            System.out.println("Enter done to stop entering numbers");
            System.out.print("enter number: ");
            String ans = game.next();
            while (!ans.equals("done"))
            {
                num = Double.parseDouble(ans);
                sum = sum + num;
                cnt = cnt + 1;
                System.out.print("enter number: ");
                ans = game.next();
            }
            System.out.println(cnt);
            System.out.println(sum);
            System.out.println("Total Score " + sum + " count scores " + cnt + " avg score " + sum / cnt);
            System.out.println("Enter another contestant (Y/N)?");
            String str = game.next();
            if (!str.equals("Y"))
                break;
        }
    }
}
上記のプロセスは機能しますが、「Y」と入力してスコアを追加した後、2 番目のプログラム Olympic.java が正しく機能しません。代わりに、以前の計算に追加する代わりに、まったく新しい平均の計算を開始します。
import java.util.Scanner;
// This is the Olympic program
// Written by me
public class Olympic
{
    public static void main(String args[])
    {
        Scanner game = new Scanner(System.in);
        double num = 0.0;
        double sum = 0.0;
        int cnt = 0;
        double highscore = Double.MAX_VALUE;
        double lowscore = Double.MIN_VALUE;
        while (true)
        {
            System.out.println("Enter as many non-negative integers as you like ");
            System.out.println("one at a time and I will find the average");
            System.out.println("Enter done to stop entering numbers");
            System.out.print("enter number: ");
            String ans = game.next();
            lowscore = game.nextDouble();
            highscore = game.nextDouble();
            while (!ans.equals("done"))
            {
                num = Double.parseDouble(ans);
                sum = (sum + num) - lowscore - highscore;
                cnt = cnt + 1;
                System.out.print("enter number: ");
                if (num > highscore)
                {
                    highscore = num;
                }
                if (num < lowscore)
                {
                    lowscore = num;
                }
                ans = game.next();
            }
            System.out.println("Throwing out low score " + lowscore + " and high score " + highscore);
            System.out.println("Total Score " + sum + " count scores " + cnt + " avg score " + sum / cnt);
            System.out.println("Enter another contestant (Y/N)?");
            String str = game.next();
            if (!str.equals("Y"))
                break;
        }
    }
}