创建数组存储5个学生的姓名和这5个学生三门课程Java、Linux、sql的成绩,通过查询学生姓名获取该同学所有课程的成绩,通过查询课程获取所有该课程不及格学生的名单
时间: 2024-11-27 10:11:26 浏览: 21
为了实现这个功能,我们可以使用一个二维数组或HashMap结构来存储学生姓名及其对应课程的成绩。这里我会用Java的HashMap来举例,因为它的查找性能更好。
首先,我们可以定义一个包含姓名和成绩的`Map`结构:
```java
import java.util.*;
class Student {
String name;
Map<String, Integer> grades;
// 构造函数
public Student(String name) {
this.name = name;
grades = new HashMap<>();
}
void addGrade(String course, int score) {
grades.put(course, score);
}
}
// 创建五个学生
List<Student> students = new ArrayList<>();
students.add(new Student("Student1"));
students.add(new Student("Student2"));
students.add(new Student("Student3"));
students.add(new Student("Student4"));
students.add(new Student("Student5"));
// 分别为每个学生添加成绩(这里只是一个示例,实际操作可能需要从其他地方读取)
for (int i = 0; i < students.size(); i++) {
String[] courses = {"Java", "Linux", "SQL"};
for (String course : courses) {
int score = i * 10 + (i % 3); // 假设每个学生每门课的成绩不同,可以根据实际情况替换
students.get(i).addGrade(course, score);
}
}
```
接下来,我们可以通过姓名查询学生的所有成绩:
```java
public List<Integer> getGradesByStudentName(String studentName) {
Student targetStudent = students.stream()
.filter(s -> s.name.equals(studentName))
.findFirst()
.orElse(null);
if (targetStudent != null) {
return targetStudent.grades.values();
} else {
throw new NoSuchElementException("Student not found");
}
}
// 使用示例
List<Integer> student1Grades = getGradesByStudentName("Student1");
```
同样地,我们可以根据课程名称获取不及格的学生列表:
```java
public List<String> getStudentsByCourseNotPassing(String course) {
return students.stream()
.filter(s -> !s.grades.containsKey(course) || s.grades.get(course) < 60)
.map(Student::getName)
.collect(Collectors.toList());
}
// 使用示例
List<String> failingStudentsInJava = getStudentsByCourseNotPassing("Java");
```
以上代码展示了如何存储和检索学生姓名以及成绩的基本操作。如果需要实时更新成绩或者处理更复杂的逻辑,可能还需要进一步扩展这些类和方法。
阅读全文