【发布时间】:2020-04-04 04:54:58
【问题描述】:
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} studentgrades = {{'A','A','A','B'},{'A','B','B'}};
输出:(预期)
3.75, 3.333
输出:(实际)
4.00, 0.00
import java.util.ArrayList;
public class StudentUtil {
public static double[] calculateGPA(int[] studentIdList, char[][] studentsGrades) {
double[] Grades = new double[studentIdList.length];
for(int i = 0; i < studentsGrades.length; i++) {
double sumGrades = 0.0;
for(int j = 0; j < studentsGrades.length; j++) {
if(studentsGrades[i][j] == 'A') {
sumGrades += 4;
}
else if(studentsGrades[i][j] == 'B') {
sumGrades += 3;
}
else if(studentsGrades[i][j] == 'C') {
sumGrades += 2;
}
}
Grades[i++] = sumGrades / studentsGrades.length;
}
return Grades;
}
//(Test Case)
import static java.lang.System.out;
import java.text.DecimalFormat;
import static java.lang.System.out;
public class TestStudentUtil {
public static void main(String[] args) throws Exception {
int[] studentIdList = { 1001, 1002 };
char[][] studentsGrades = { { 'A', 'A', 'A', 'B' }, { 'A', 'B', 'B' } };
double[] results = StudentUtil.calculateGPA(studentIdList, studentsGrades);
for (double result : results) {
out.printf("%.2f\n", result);
}
}
}
【问题讨论】:
-
你的两个循环从 0 循环到 studentGrades.length。出于某种我无法理解的原因,你有 i++ 两次。你也除以错误的数字。提取一种方法来计算单个数组的平均值。这会让事情变得更加清晰。