我正在编写一个程序,用户在课堂上输入一些学生的数量,然后输入每个学生的姓名和考试分数。然后该程序会计算出学生的成绩并为其分配相应的字母等级。最后,它将他们的分数添加到classSum中,计算平均班级分数并显示它。Java GradeCalculator - 虽然循环无法正常工作
这是我到目前为止有: 公共类GradeCalculator {
public static void main(String[] args) {
int classSum = 0; // variable used to hold sum of entire classes exams
int classExams = 0; // variable used to hold number of exams taken by whole class
Scanner s = new Scanner(System.in);
System.out.println("Welcome to Gradecalculator!");
System.out.println("Please enter the number of students:");
int students = s.nextInt();
System.out.println("Please enter the number of exams:");
int exams = s.nextInt();
int i = 0;
int studentnumber = 1;
int sum = 0;
while (i < students) { // loop until it matches number of students entered above
i++;
sum = 0;
System.out.println("Enter student " + studentnumber++ + "'s name :");
String studentname = s.next();
System.out.println("Enter exam scores :");
int input = 0;
for (; input < exams; input++) {
int n = s.nextInt();
sum+=n;
if (n < 0) {
System.out.println("Invalid exam scores, reenter: "); //if one of the scores entered is negative, display message
}
}
double average = sum/exams; // assign letter grade based on average of exams
if (average <= 100 && average >= 90) {
System.out.println("Letter grade: A");
System.out.println(studentname + " gets 4 stars! ****");
} if (average <= 89 && average >= 80) {
System.out.println("Letter grade: B");
System.out.println(studentname + " gets 3 stars! ***");
} if (average <= 79 && average >= 70) {
System.out.println("Letter grade: C");
System.out.println(studentname + " gets 2 stars! **");
} if (average <= 69 && average >= 60) {
System.out.println("Letter grade: D");
System.out.println(studentname + " gets 1 star! *");
} if (average <= 59) {
System.out.println("Letter grade: F");
System.out.println(studentname + " gets 0 stars!");
}
classSum += sum; // add sum of this student's scores to the classSum
classExams += exams; // add exams taken by this student to amount of exams taken by whole class
}
int classAverage = classSum/classExams; // compute class average
System.out.println("Class statistics:");
System.out.println("\tAverage: " + classAverage);
}
}
这是输出我得到:
Welcome to Gradecalculator!
Please enter the number of students:
2
Please enter the number of exams:
3
Enter student 1's name :
sam
Enter exam scores :
80 80 80
Letter grade: B
sam gets 3 stars! ***
Enter student 2's name :
joe
Enter exam scores :
90 90 90
Class statistics:
Average: 125
正如你可以看到,第一个学生后,进入名称和考试分数不会显示下一个学生的信件成绩,因为该循环应该这样做。此外,班级平均数不正确计算。我在这里遇到了一些问题,我在哪里出错。
咦每转?我确实接受了答案,因为他帮助我解决了我的问题。我不想继续打扰我的下一个问题,这是不同的。 – sam 2014-10-11 22:35:24