![](/img/trans.png)
[英]how can i get the total number of similar grade letters in my student grade calculator program
[英]Grade calculator program
我完全沉迷于这个项目,在这个项目中,用户应该输入班上的学生人数以及参加考试的次数。 然后,他们输入每个学生的名字,然后在该学生的考试分数上用空格隔开。 该程序将计算每个学生的平均成绩和相应的字母等级。
这是我到目前为止的内容:
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 sam获得0星!
显然,三个80应该首先是B,所以我显然不能正确地计算平均值,但是我不知道为什么。
您的条件应如下所示:
if (average <= 100 && average >=90)
不是这样的:
if (average <= 100 & average >=90)
您要使用逻辑与而不是按位与。
另一个问题是您在每次迭代中将sum
重置为0,因此您实际上并没有累积总和。
最后,平均值和所有条件的计算应在for循环之外,因为您要在计算平均值之前读取所有输入。
您在这里犯了一个小错误。
if (average <= 100 & average >= 90)
我认为您正在尝试使用逻辑AND
使用double &
这样。
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.