【发布时间】:2014-12-06 19:58:33
【问题描述】:
我正在编写一个程序,其中用户输入班级中的学生人数、班级参加的考试次数,然后输入每个学生的姓名和考试成绩。然后程序计算该学生的成绩并为他们分配相应的字母成绩。最后,它将他们的分数添加到 classSum 中,计算平均班级分数并显示出来。
这是我目前所拥有的: 公共类成绩计算器{
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
如您所见,在第一个学生之后,输入姓名和考试成绩不会像循环应该做的那样显示下一个学生的字母成绩。此外,没有正确计算班级平均值。我在哪里出错了,我有点不知所措。
【问题讨论】:
-
嗯?我确实接受了答案,因为他帮助我解决了我的问题。我不想继续为我遇到的下一个问题打扰同一个人,这是不同的。
标签: java while-loop