用Java实现使用列表(ArrayList或LinkedList)来管理个人信息。 首先,输入字符串n-x-y。n代表所要处理的数据的数量,x代表姓,y代表名。 然后输入n个人的信息,每一行代表一个人的信息。每行字符串格式为"姓-名-成绩-编号",以-作为分隔符。 将所有姓为x的字符串放入数组列表list1中。然后,输出list1。 进一步地将list1中的名字为y(忽略大小写)的字符串取出放入list2中。然后,输出list2。 最后,对list2中的字符串按成绩进行降序排序并输出。
时间: 2024-04-02 19:37:30 浏览: 66
好的,这个问题也不是很难。可以使用 Java 的 ArrayList 来管理个人信息,并根据题目要求进行处理。具体代码如下:
```java
import java.util.*;
public class PersonManager {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 读取 n、x、y
int n = scanner.nextInt();
String x = scanner.next();
String y = scanner.next();
// 读取 n 个人的信息
List<String> all = new ArrayList<>();
for (int i = 0; i < n; i++) {
String info = scanner.next();
all.add(info);
}
// 将所有姓为 x 的字符串放入 list1 中
List<String> list1 = new ArrayList<>();
for (String info : all) {
String[] parts = info.split("-");
if (parts[0].equals(x)) {
list1.add(info);
}
}
System.out.println("list1: " + list1);
// 将 list1 中的名字为 y 的字符串取出放入 list2 中
List<String> list2 = new ArrayList<>();
for (String info : list1) {
String[] parts = info.split("-");
if (parts[1].equalsIgnoreCase(y)) {
list2.add(info);
}
}
System.out.println("list2: " + list2);
// 对 list2 中的字符串按成绩进行降序排序并输出
Collections.sort(list2, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String[] parts1 = o1.split("-");
String[] parts2 = o2.split("-");
int score1 = Integer.parseInt(parts1[2]);
int score2 = Integer.parseInt(parts2[2]);
return score2 - score1;
}
});
System.out.println("list2 sorted by score: " + list2);
}
}
```
这个程序首先读取 n、x、y,然后读取 n 个人的信息,将它们存储在 all 列表中。然后遍历 all 列表,将所有姓为 x 的字符串放入 list1 中,并输出 list1。接着遍历 list1,将其中名字为 y 的字符串放入 list2 中,并输出 list2。最后使用 Collections.sort 对 list2 进行排序,并输出排序后的 list2。
阅读全文