因此,我正在尝试编写一个程序,您可以在其中输入成绩,总计,平均成绩,然后降低最低成绩。这是我到目前为止,但是,当我尝试运行程序时,当我输入值100,100,75时,我得到平均值92。
平均值应打印为100.代码有什么问题?
提前致谢!
import java.util.Scanner;
public class l3_drop_lowest_slide36 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double grade;
int count;
double minGrade;
double sumGrade;
double average;
System.out.println("Begin entering grades below. When done, type -1.");
System.out.println();
count = 0;
sumGrade = 0;
grade = 0;
minGrade = 100;
while ( grade != -1 ) {
sumGrade += grade;
count++;
System.out.print("Grade: ");
grade = input.nextDouble();
}
if ( grade < minGrade ) {
minGrade = grade;
}
if ( grade == -1 ) {
sumGrade = sumGrade - minGrade;
count = count - 1;
average = (sumGrade / count);
System.out.print("Your average is: " +average);
}
}
}
答案 0 :(得分:2)
您可以这样做:
while ( grade != -1 ) {
sumGrade += grade;
count++;
System.out.print("Grade: ");
grade = input.nextDouble();
if(grade < minGrade && grade != -1)
minGrade = grade;
}
sumGrade = sumGrade - minGrade;
count = count - 1;
average = (sumGrade / count);
System.out.print("Your average is: " +average);
这样你就可以降低最低等级。
答案 1 :(得分:0)
你的
if ( grade < minGrade ) {
minGrade = grade;
}
应该在你的
里面while ( grade != -1 ) {
}
因为当你得到-1,-1&lt; 100和 minGrade = -1 。
sumGrade - minGrade =(100 + 100 + 75) - (-1)= 276
当你除以276/3 = 92时。
答案 2 :(得分:0)
您首先阅读grade = input.nextDouble();
,然后检查它是否为-1。你的while循环运行4次而不是3.所以,基本上你的计数是4而不是3.你的最低成绩是-1(最后一个输入值)而不是75.修正那个逻辑你应该是好的。