我看到最近发布的一篇文章试图达到和我一样的效果,但是他的代码停在一个学生身上,它不起作用。我设法解决了他的代码有问题,但有两件事我仍然不明白。当我输入学号的姓名时,java代码有错误,程序停止。当我只使用第一个名字时,程序会一直通过,但在计算出学生的一个成绩后停止。它不会持续循环,直到我输入的学生数量达到所有成绩。等级计算器不会循环到第二个学生
public class proj2
{
public static void main(String[] args) {
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) {
System.out.println("Enter student " + studentnumber++ + "'s name :");
String studentname = s.next();
System.out.println("Enter exam scores :");
for (; i < exams; i++) {
int n = s.nextInt();
sum+=n;
if (n < 0) {
System.out.println("Invalid exam scores, reenter: ");
}
}
double average = sum/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!");
}
}
}
}
这里是我的代码,我的目标是,一旦我已经得到我的输出为学生一个再有程序循环,但它只是停在平均第一个学生的成绩。
您使用我两次搞乱你的循环顺序 – NightSkyCode 2014-10-12 02:13:58