我完全坚持这个项目,用户应该输入一个班级的学生人数和考试数量。然后他们输入每个学生的姓名,然后在一行中用空格分隔该学生的考试成绩。该计划计算每个学生的平均分和相应的字母等级。
这是我到目前为止所做的:
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) {
double average = sum/exams;
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: ");
}
}
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!");
}
}
}
}
这是我现在得到的输出:
Welcome to Gradecalculator!
请输入学生人数: 3 请输入考试数量: 3 输入学生1的姓名: SAM 输入考试成绩: 80 80 80 字母等级:F 山姆得到0星!
显然,首先应该有三个80,所以我显然没有正确计算平均值,但我无法弄清楚原因。
答案 0 :(得分:3)
您的条件应如下所示:
if (average <= 100 && average >=90)
不喜欢这样:
if (average <= 100 & average >=90)
您希望使用逻辑AND而不是按位AND。
另一个问题是你在每次迭代中将sum
重置为0,所以你实际上并没有累积总和。
最后,平均值和所有条件的计算应该在for循环之外,因为你想在计算平均值之前读取所有输入。
答案 1 :(得分:0)
你在这里犯了一个小错误。
if (average <= 100 & average >= 90)
我认为您正在尝试使用逻辑AND
这样使用双&
。
if (average <= 100 && average >= 90)
您需要更改代码。您需要在sum
循环之外声明for
,因为每次重置为0
。
int sum = 0;
for (; i < exams; i++) {
int n = s.nextInt();
sum+=n;
}
double average = sum/exams;