java - 成绩计算器程序

标签 java loops

我完全陷入了这个项目,其中用户应该输入类(class)中的学生人数以及参加的考试次数。然后他们输入每个学生的姓名,然后在一行中输入该学生的考试成绩,并用空格分隔。该程序计算每个学生的平均分和相应的字母等级。

这是我到目前为止所拥有的:

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 的姓名: 萨姆 输入考试成绩: 80 80 80 字母等级:F 萨姆获得 0 颗星!

显然三个80首先应该是B,所以我显然没有正确计算平均值,但我不明白为什么。

最佳答案

您的条件应如下所示:

if (average <= 100 && average >=90)

不是这样的:

if (average <= 100 & average >=90)

您想要使用逻辑 AND 而不是按位 AND。

另一个问题是您在每次迭代中将 sum 重置为 0,因此您实际上并未累加总和。

最后,平均值和所有条件的计算应该在 for 循环之外,因为您希望在计算平均值之前读取所有输入。

关于java - 成绩计算器程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26318047/

相关文章:

java - MySQLSyntaxErrorException - 准备好的语句中的参数无效

java - 避免使用instanceof,但将函数参数限制为父类(super class)的一组子类

ios - 突破障碍或停止枚举的推荐方法是什么?

c - 在 for 循环中声明变量

r - 在 R 中使用 U 检验进行循环

java - 具有最快运行时间的迭代器,用于占位符

java - 通过多个类名查找 div 元素?

java - 检测并缩短字符串中的所有网址

java - 我使用 Liebniz 的 pi 计算不起作用,我不明白为什么

python - 在 Pandas 数据帧上并行操作时速度慢