如何在Eclipse的Java程序中为每个输入学科创建独立成绩列表
问题描述
我希望打印出包含以下信息的列表:
| 学科 | 成绩列表 | 平均分 |
|---|---|---|
| 学科1 | 成绩1, 成绩2, 成绩3 | 学科1平均分 |
| 学科2 | 成绩1, 成绩2, 成绩3 | 学科2平均分 |
现在的问题是我只创建了一个成绩列表,不知道怎么给每个学科单独创建成绩列表。我尝试了如下代码:
package graduation; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class GraduationGrade { public static void main(String[] args) { List<String> disciplines = new ArrayList<>(); List<Integer> disciplineGrades = new ArrayList<>(); List<Integer> disciplineAverage = new ArrayList<>(); int i = 0; while (true) { System.out.println("请输入学科名称,或输入EXIT退出"); Scanner sc = new Scanner(System.in); String discipline = sc.next(); if (discipline.equals("EXIT")) { System.out.println(" 学科 成绩 平均分 "); for (int j = 0; j < disciplines.size(); j++) { System.out.println((j + 1) + " " + disciplines.get(j) + " " + disciplineGrades.get(j) + " " + disciplineAverage.get(j)); } break; } else { System.out.println("请输入你在" + discipline + "这门学科的成绩数量"); sc = new Scanner(System.in); int gradeNumbers = sc.nextInt(); do { System.out.println("请逐个输入你在" + discipline + "的成绩(范围4到10)"); sc = new Scanner(System.in); int grades = sc.nextInt(); int sum = disciplineGrades.stream().mapToInt(Integer::intValue).sum(); int average = sum / gradeNumbers; disciplines.add(discipline); disciplineGrades.add(grades); disciplineAverage.add(average); i++; } while (i < gradeNumbers); } } } }
运行程序后得到如下结果:
请输入学科名称,或输入EXIT退出 数学 请输入你在数学这门学科的成绩数量 4 请逐个输入你在数学的成绩(范围4到10) 4 请逐个输入你在数学的成绩(范围4到10) 5 请逐个输入你在数学的成绩(范围4到10) 6 请逐个输入你在数学的成绩(范围4到10) 7 请输入学科名称,或输入EXIT退出 生物 请输入你在生物这门学科的成绩数量 10 请逐个输入你在生物的成绩(范围4到10) 8 请逐个输入你在生物的成绩(范围4到10) 6 请逐个输入你在生物的成绩(范围4到10) 7 请逐个输入你在生物的成绩(范围4到10) 5 请逐个输入你在生物的成绩(范围4到10) 4 请逐个输入你在生物的成绩(范围4到10) 6 请输入学科名称,或输入EXIT退出 EXIT 学科 成绩 平均分 1 数学 4 0 2 数学 5 1 3 数学 6 2 4 数学 7 3 5 生物 8 2 6 生物 6 3 7 生物 7 3 8 生物 5 4 9 生物 4 4 10 生物 6 5
当前程序会重复添加学科名称,平均分计算也不正确,需要实现每个学科对应独立的成绩列表。
内容的提问来源于stack exchange,提问作者Andrea
相关产品推荐
相关产品推荐

