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