Java学生进行选课,请统计出每个学生的选课门数,及每门课选修的人数。 输入格式: 学生学号 选修课程 学生学号 选修课程
时间: 2023-11-10 11:21:21 浏览: 122
java_学生选课系统
5星 · 资源好评率100%
好的,这是一个统计问题。我可以为您提供一种解决方案:
1. 创建一个HashMap对象,用于存储每个学生的选课信息。其中,键为学生学号,值为一个ArrayList对象,存储该学生所选的所有课程。
2. 遍历输入的选课信息,将每个学生的选课信息存储到HashMap中。
3. 统计每个学生的选课门数,可以遍历HashMap中的每个键值对,计算ArrayList的长度即可。
4. 统计每门课选修的人数,可以遍历HashMap中的每个ArrayList,统计每门课的选修人数即可。
以下是Java代码示例:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
public class CourseSelection {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
HashMap<String, ArrayList<String>> map = new HashMap<>();
while (scanner.hasNext()) {
String studentId = scanner.next();
String course = scanner.next();
if (!map.containsKey(studentId)) {
map.put(studentId, new ArrayList<>());
}
map.get(studentId).add(course);
}
for (String studentId : map.keySet()) {
int courseNum = map.get(studentId).size();
System.out.println(studentId + " " + courseNum);
}
HashMap<String, Integer> courseMap = new HashMap<>();
for (ArrayList<String> courseList : map.values()) {
for (String course : courseList) {
if (!courseMap.containsKey(course)) {
courseMap.put(course, 0);
}
courseMap.put(course, courseMap.get(course) + 1);
}
}
for (String course : courseMap.keySet()) {
int studentNum = courseMap.get(course);
System.out.println(course + " " + studentNum);
}
}
}
```
输入样例:
```
1001 Math
1001 English
1002 Math
1003 Chinese
1003 English
1003 Physics
```
输出样例:
```
1001 2
1002 1
1003 3
Math 2
English 2
Chinese 1
Physics 1
```
阅读全文