【发布时间】:2020-05-09 20:20:46
【问题描述】:
对于家庭作业,我需要获得未指定数量的成绩(不超过 100),获得平均值,并显示高于和低于平均水平的分数。我正在尝试使用 Sentinal 值在输入成绩时退出循环。虽然它确实退出了循环,但它还将 Sentinal 值作为成绩输入并将其计算为平均值。例如,如果我输入分数“50 75 100”,然后以 -1 退出。结果将显示类似 74.66666666667 的内容。我可以通过查看我的 for 循环来了解它为什么会这样做,但我正在努力寻找解决它的方法。
public class AnalyzeScores {
public static void main(String[] args) {
double scores, average;
int aboveAvg, belowAvg;
double sum = 0;
int count = 0;
Scanner input = new Scanner(System.in);
double[] scoresList = new double[100];
for (int i = 0; i < 100; i++) {
System.out.print("Enter Score " + (i + 1) + "(negative score exits): ");
scoresList[i] = input.nextDouble();
sum = sum + scoresList[i];
count++;
if (scoresList[i] < 0) {
average = (sum / i);
System.out.println("average is " + average);
return;
}
}
}
}
【问题讨论】:
-
您正在退出该方法,但没有尝试找到高于或低于平均水平的分数。这就是为什么你只看到你的平均值。不在这里寻找答案,只需考虑如何遍历 scoreList 数组并在从方法返回之前将每个元素与平均值进行比较。
-
是的,我还没有达到我搜索高于或低于平均水平的程度。在继续讨论之前,我想解决我所询问的另一个问题。原来我只需要移动一些语句