计算学生证清单的GPA

时间:2019-12-10 23:24:50

标签: java gpa

JAVA的入门者。我正在尝试打印学生的GPA。找到以下说明问题。

我们只能有3个等级:A,B,C对应于点4,3,2。假设一个学生有 获A,A,A和B等级。GPA=(4 + 4 + 4 + 3)/ 4 = 3.75。

calculateGPA应该返回学生的GPA数组。

输入: 学生列表= {1001,1002} 学生成绩= {{'A','A','A','B'},{'A','B','B'}};

输出:(预期)

3.75,3.333

输出:(实际)

4.00,0.00

free

1 个答案:

答案 0 :(得分:0)

问题出在内部循环中:您的循环条件为j < studentsGrades.length,应在j < studentsGrades[i].length上遍历数组studentsGrades[i]的所有条目。

编写此代码的一种更干净的方法是使用增强的for循环,因为无论如何您只需要值,而不是索引。除了易于阅读之外,还避免了诸如编写错误的循环绑定之类的细微错误的可能性。

            for(int i = 0; i < studentsGrades.length; i++) {
                double sumGrades = 0.0;
                char[] currentGrades = studentsGrades[i];

                for(char grade : currentGrades) {
                    if(grade == 'A') {
                        sumGrades += 4;
                    }
                    else if(grade == 'B') {
                        sumGrades += 3;
                    }
                    else if(grade == 'C') {
                        sumGrades += 2;
                    }
                }
                Grades[i] = sumGrades / currentGrades.length;
            }

最后的分裂有同样的问题;您需要除以该学生的分数,而不是除以学生人数。

还请注意,i++在外部循环的更新步骤中已经完成,因此您不应该在行Grades[i] = ...中也这样做。