Java程序计算平均值。如何显示最高平均值?

Java程序计算平均值。如何显示最高平均值?,java,loops,average,mean,Java,Loops,Average,Mean,我有一个java程序,它计算4名玩家的分数,并在输入-1时计算每个玩家的平均分数。在课程结束时,我需要显示4个平均分中的最高平均分,但我不知道如何做到这一点,你们能给我指出正确的方向吗?程序运行时看起来是这样的:我还附加了代码,除了循环之外,我不能使用任何东西 玩家1 输入你的分数:100 输入你的分数:90 输入你的分数:80 输入你的分数:70 输入您的分数:-1当输入-1时,将计算平均分数 平均分数=85.00 玩家2 输入你的分数:90 输入你的分数:90 等等 等等 您可以在代码顶部添

我有一个java程序,它计算4名玩家的分数,并在输入-1时计算每个玩家的平均分数。在课程结束时,我需要显示4个平均分中的最高平均分,但我不知道如何做到这一点,你们能给我指出正确的方向吗?程序运行时看起来是这样的:我还附加了代码,除了循环之外,我不能使用任何东西

玩家1

输入你的分数:100

输入你的分数:90

输入你的分数:80

输入你的分数:70

输入您的分数:-1当输入-1时,将计算平均分数

平均分数=85.00

玩家2

输入你的分数:90

输入你的分数:90

等等

等等


您可以在代码顶部添加一个highest的副本,如double highest=0,然后在for循环中,如果当前平均值更高,则可以替换它

if(score > highest){
      highest=score;
}

然后在-1处,您可以将其重置为0或使其继续运行

只需跟踪另一个变量中的最高平均值即可。然后在您的分数==-1条件中检查当前平均值是否高于最高平均值,如果是,则将当前值设为新的最高值。然后在for循环之后,您可以打印出最高平均值。

将所有4名玩家的平均值存储到一个数组中。然后检查数组中的最大数

double[] highest = new double[4];
for(int i=0; i<4; i++){
    highest[i] = totalScore/count;
}

if(highest[0]>highest[1] && highest[0]>highest[2] && highest[0]>highest[3])
    System.out.println("highest" + highest[0]);

else if(highest[1]>highest[0] && highest[1]>highest[2] && highest[0]>highest[3])
    System.out.println("highest" + highest[1]);

else if(highest[2]>highest[0] && highest[2]>highest[1] && highest[0]>highest[3])
    System.out.println("highest" + highest[2]);

else System.out.println("highest" + highest[3]);
下面是我为使代码正常工作而对代码所做的修改列表:

变量计数现在从-1开始,所以当我们退出循环时,不需要进行计数。 我添加了一个记录所有平均值的列表。 我在循环之后删除了验证ifcount==-1,因为退出循环的唯一方法是让count=-1,所以我们已经知道它是实际值。 为了检索所有平均值的最大值,我使用Collections.maxallAverages。
只要保留一个变量来记录每次的最高平均分,就像下面我的例子中的最高平均分一样。代码与您的相同,只是为了可读性我更改了变量名

public static void main(String[] args) throws NumberFormatException,
            IOException {
        double currentScore = 0;
        double totalScore = 0;
        int numScores = 0;
        double averageScore = 0;
        double topAverage = 0;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        for (int i = 0; i < 4; i++) {

            do {
                System.out.println("Enter Score");
                currentScore = Double.parseDouble(br.readLine());
                totalScore = totalScore + currentScore;
                numScores += 1;
            } while (currentScore != -1);
            numScores-=1;
            totalScore+=1;
            averageScore = totalScore / numScores;
            System.out.println("Average Score is " + averageScore);
            if (topAverage < averageScore) {
                topAverage = averageScore;
            }
            currentScore = 0;
            totalScore = 0;
            numScores = 0;
        }
        System.out.println("Top Average is " + topAverage);
    }
编辑


Andrei Nikolaenko在我之前发布了同样的答案,所以考虑一下这个答案,我添加了这个编辑,因为我想提一下我的浏览器没有及时刷新,告诉我答案已经发布了。p> 你在分数上加-1。如果分数==-1,我会在totalScore+=分数之前做;计数++对不起,我还应该提到,我们不允许使用中断。那么您需要在while条件下使用它。更新了我的答案。非常感谢。这很有道理。太棒了,非常感谢。这一个工作得最好,因为它不使用任何我们不允许使用的东西,如数组等。感谢您的帮助。解决了我的问题。
public static void main(String[] args) {
    final List<Double> allAverages = new ArrayList<>();
    double score = 0;
    double totalScore = 0;
    double avg = 0;
    int count = -1;

    Scanner input = new Scanner(System.in);

    for (int player = 1; player <= 4; player++) {
        System.out.printf("\nPlayer %d\n", player);

        do {
            System.out.println("Enter Your Score: ");
            totalScore = totalScore + score;
            score = input.nextDouble();
            count++;
        } while (score != -1);

        avg = totalScore / count;
        System.out.printf("Average Score = %.2f\n", avg);
        allAverages.add(totalScore / count);
        score = 0;
        totalScore = 0;
        count = -1;
    }

    System.out.println("The highest is : " + Collections.max(allAverages));

}
public static void main(String[]args) {
    double bestScore = 0;
    int bestPlayer = 1;

    Scanner input = new Scanner(System.in);

    for (int player = 1; player <= 4; player++){
        System.out.printf("\nPlayer %d\n", player);
        int count = 0; // does not need to be double
        double totalScore = 0;
        do {
            System.out.println("Enter Your Score: ");
            double score = input.nextDouble();
            if (score != -1) { 
                totalScore += score;
                count++;
            }
        } while (score != -1);

        double averageScore = totalScore / count;

        if (averageScore > bestScore) {
            bestScore = averageScore;
            bestPlayer = player;
        }

        System.out.printf("Average Score = %.2f\n", averageScore);
    }

    System.out.printf("Best Average Score = %.2f, best player = %d\n", bestScore, bestPlayer);
}
public static void main(String[] args) throws NumberFormatException,
            IOException {
        double currentScore = 0;
        double totalScore = 0;
        int numScores = 0;
        double averageScore = 0;
        double topAverage = 0;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        for (int i = 0; i < 4; i++) {

            do {
                System.out.println("Enter Score");
                currentScore = Double.parseDouble(br.readLine());
                totalScore = totalScore + currentScore;
                numScores += 1;
            } while (currentScore != -1);
            numScores-=1;
            totalScore+=1;
            averageScore = totalScore / numScores;
            System.out.println("Average Score is " + averageScore);
            if (topAverage < averageScore) {
                topAverage = averageScore;
            }
            currentScore = 0;
            totalScore = 0;
            numScores = 0;
        }
        System.out.println("Top Average is " + topAverage);
    }