3.编写一个程序,把学生学号、姓名和考试分数录入到Map中,并按分数降序显示 学生的名字。要求定义Student类,封装学生学号,姓名和考试分数3个属性及方法。程序设计思路
时间: 2023-09-16 18:06:03 浏览: 246
C语言学生信息管理系统.doc
5星 · 资源好评率100%
### 回答1:
1. 定义Student类,包含学号、姓名和考试分数3个属性,以及获取属性值的方法。
2. 创建一个Map对象,键为学生学号,值为Student对象。
3. 通过Scanner类获取用户输入的学生信息,并将其存储到Map中。
4. 创建一个List对象,将Map中的所有Student对象添加到List中。
5. 实现Comparator接口,按照学生考试分数降序排序List中的元素。
6. 遍历List,输出学生姓名和考试分数。
代码实现如下:
```
import java.util.*;
class Student {
private String id;
private String name;
private int score;
public Student(String id, String name, int score) {
this.id = id;
this.name = name;
this.score = score;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<String, Student> studentMap = new HashMap<>();
List<Student> studentList = new ArrayList<>();
// 获取用户输入的学生信息并存储到Map中
System.out.print("请输入学生个数:");
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {
System.out.print("请输入第" + (i+1) + "个学生的学号、姓名、分数:");
String id = scanner.next();
String name = scanner.next();
int score = scanner.nextInt();
Student student = new Student(id, name, score);
studentMap.put(id, student);
}
// 将Map中的Student对象添加到List中
studentList.addAll(studentMap.values());
// 按照学生考试分数降序排序
Collections.sort(studentList, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s2.getScore() - s1.getScore();
}
});
// 输出学生姓名和考试分数
System.out.println("按分数降序排序后的学生姓名:");
for (Student student : studentList) {
System.out.println(student.getName());
}
}
}
```
### 回答2:
程序设计思路如下:
1. 首先创建一个Student类,包含学号(id),姓名(name),考试分数(score)三个属性,并提供对应的get和set方法。
2. 创建一个Map对象,用来存储学生信息,键值对形式为:学号-学生对象。
3. 编写一个函数用于录入学生信息,函数参数为学生的学号、姓名和考试分数。在函数内部创建一个新的Student对象,并将学号、姓名和考试分数设置到该对象中。
4. 将学生对象以学号为键,添加到Map对象中。
5. 接下来,通过定义一个比较器来对存储学生信息的Map进行降序排序。比较器可通过实现Comparator接口来定义。在比较方法中,根据学生的分数进行比较,并返回相应的结果。
6. 使用Collections类的sort方法对Map进行排序,传入上一步定义的比较器对象。
7. 最后,遍历排序后的Map,按顺序输出学生的姓名。
下面是一个简单的示例代码:
```java
import java.util.*;
class Student {
private String id;
private String name;
private int score;
public Student(String id, String name, int score) {
this.id = id;
this.name = name;
this.score = score;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
class ScoreComparator implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
return s2.getScore() - s1.getScore();
}
}
public class Main {
public static void main(String[] args) {
Map<String, Student> map = new HashMap<>();
// 录入学生信息
addStudent(map, "001", "张三", 90);
addStudent(map, "002", "李四", 85);
addStudent(map, "003", "王五", 95);
// 对学生信息进行排序
List<Student> studentList = new ArrayList<>(map.values());
Collections.sort(studentList, new ScoreComparator());
// 输出学生名字
for (Student student : studentList) {
System.out.println(student.getName());
}
}
public static void addStudent(Map<String, Student> map, String id, String name, int score) {
Student student = new Student(id, name, score);
map.put(student.getId(), student);
}
}
```
### 回答3:
编写程序的思路如下:
1. 定义一个Student类,包含学号、姓名和考试分数3个属性,并提供相应的get和set方法。
2. 创建一个Map对象,用于存储学生的学号和考试分数。
3. 通过键盘输入,依次录入学生的学号、姓名和考试分数,并将它们存入Map中。
4. 使用Map的entrySet()方法获取Map中所有的键值对,并将它们存入一个List中。
5. 使用Collections对List进行排序,排序方式为按照分数降序排列。
6. 遍历List中的每个键值对,获取学生的姓名并输出。
以下是示例代码:
```java
import java.util.*;
class Student {
private String studentId;
private String name;
private int score;
public Student(String studentId, String name, int score) {
this.studentId = studentId;
this.name = name;
this.score = score;
}
public String getStudentId() {
return studentId;
}
public void setStudentId(String studentId) {
this.studentId = studentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<String, Integer> studentMap = new HashMap<>();
for (int i = 0; i < 3; i++) {
System.out.print("请输入学生学号:");
String studentId = scanner.next();
System.out.print("请输入学生姓名:");
String name = scanner.next();
System.out.print("请输入学生考试分数:");
int score = scanner.nextInt();
studentMap.put(studentId, score);
}
List<Map.Entry<String, Integer>> studentList = new ArrayList<>(studentMap.entrySet());
Collections.sort(studentList, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
System.out.println("按分数降序显示学生姓名:");
for (Map.Entry<String, Integer> entry : studentList) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}
```
以上代码可以实现将学生的学号、姓名和考试分数录入到Map中,并按分数降序显示学生的姓名。
阅读全文