要求:使用ArrayList存储学生信息。 输入格式: 输入多个学生的成绩信息,每个学生的成绩信息格式:学号+英文空格+姓名+英文空格+数学成绩+英文空格+物理成绩 以“end”为输入结束标志 输出格式: 按数学/物理成绩之和从高到低的顺序输出所有学生信息,每个学生信息的输出格式:学号+英文空格+姓名+英文空格+数学/物理成绩之和 成绩相同的情况,按输入的先后顺序输出。
时间: 2023-08-14 13:04:41 浏览: 169
好的,这是一道Java编程题,需要使用ArrayList来存储学生信息,并按照数学/物理成绩之和从高到低的顺序输出所有学生信息。具体实现步骤如下:
1. 创建一个ArrayList对象,用于存储学生信息。
2. 使用Scanner类从标准输入中读取学生信息,每次读入一行,判断是否为"end",如果是,则结束输入;否则,解析该行信息,并将学生信息存储到ArrayList中。
3. 实现一个Comparator接口,用于比较两个学生的数学/物理成绩之和。该接口的实现方法应该返回一个整数值,表示两个学生之间的大小关系。
4. 使用Collections.sort()方法对ArrayList进行排序,排序时使用上述自定义的Comparator进行比较。
5. 遍历ArrayList,输出每个学生的信息,格式为"学号+英文空格+姓名+英文空格+数学/物理成绩之和"。
具体代码实现可以参考以下示例代码:
相关问题
输入多个学生的成绩信息,包括:学号、姓名、成绩。 学号是每个学生的唯一识别号,互不相同。 姓名可能会存在重复。 要求:使用HashMap存储学生信息。 输入格式: 输入多个学生的成绩信息,每个学生的成绩信息格式:学号+英文空格+姓名+英文空格+成绩 以“end”为输入结束标志 输出格式: 按学号从大到小的顺序输出所有学生信息,每个学生信息的输出格式:学号+英文空格+姓名+英文空格+成绩
好的,我已经了解了您的要求。根据您的要求,我们可以使用HashMap来存储学生信息,其中学号作为键,姓名和成绩作为值。以下是实现代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<String, String[]> map = new HashMap<String, String[]>(); //用HashMap存储学生信息,学号为键,姓名和成绩为值
String input = scanner.nextLine();
while (!input.equals("end")) { //输入“end”表示结束
String[] info = input.split(" ");
String[] value = {info[1], info[2]}; //将姓名和成绩存储在value数组中
map.put(info[0], value); //将学号和value数组存储在HashMap中
input = scanner.nextLine();
}
List<String> list = new ArrayList<String>(map.keySet()); //将HashMap的键存储在List中
Collections.sort(list); //按学号从小到大排序
for (int i = list.size() - 1; i >= 0; i--) { //从后向前遍历List
String[] value = map.get(list.get(i)); //获取当前学号对应的姓名和成绩
System.out.println(list.get(i) + " " + value[0] + " " + value[1]); //输出学生信息
}
}
}
```
您可以按照以下格式输入学生信息:
```
001 Tom 90
002 Jack 80
003 Tom 85
end
```
程序会按照学号从大到小的顺序输出所有学生的信息:
```
003 Tom 85
002 Jack 80
001 Tom 90
```
输入多个学生的成绩信息,包括:学号、姓名、成绩。 学号是每个学生的唯一识别号,互不相同。 姓名可能会存在重复。 要求:使用HashMap存储学生信息。 输入多个学生的成绩信息,每个学生的成绩信息格式:学号+英文空格+姓名+英文空格+成绩 以“end”为输入结束标志按学号从大到小的顺序输出所有学生信息,每个学生信息的输出格式:学号+英文空格+姓名+英文空格+成绩
好的,以下是实现该功能的 Java 代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<String, String[]> map = new HashMap<>(); // 存储学生信息的 HashMap,键为学号,值为一个包含姓名和成绩的字符串数组
while (true) {
String input = scanner.nextLine();
if (input.equals("end")) {
break;
}
String[] info = input.split(" ");
String id = info[0];
String name = info[1];
String score = info[2];
map.put(id, new String[]{name, score});
}
List<String> ids = new ArrayList<>(map.keySet()); // 存储学生学号的列表
Collections.sort(ids, Collections.reverseOrder()); // 按学号从大到小排序
for (String id : ids) {
String[] info = map.get(id);
String name = info[0];
String score = info[1];
System.out.println(id + " " + name + " " + score);
}
}
}
```
运行程序后,你可以输入多个学生的成绩信息,以“end”为输入结束标志。程序会将学生信息存储在一个 HashMap 中,并按学号从大到小的顺序输出所有学生信息。每个学生信息的输出格式为:学号+英文空格+姓名+英文空格+成绩。
阅读全文