用JAVA编写:使用列表(ArrayList或LinkedList)来管理个人信息。 首先,输入字符串n-x-y。n代表所要处理的数据的数量,x代表姓,y代表名。 然后输入n个人的信息,每一行代表一个人的信息。每行字符串格式为"姓-名-成绩-编号",以-作为分隔符。 将所有姓为x的字符串放入数组列表list1中。然后,输出list1。 进一步地将list1中的名字为y(忽略大小写)的字符串取出放入list2中。然后,输出list2。 最后,对list2中的字符串按成绩进行降序排序并输出。 输入格式: 第一行输入n-x-y 下面输入n行字符串,格式为"姓-名-成绩-编号" 输出格式: 格式化输出的多个人的信息
时间: 2024-04-02 07:37:21 浏览: 67
以下是Java代码实现:
```java
import java.util.*;
public class PersonalInfoManagement {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 解析输入字符串
String[] input = scanner.nextLine().split("-");
int n = Integer.parseInt(input[0]);
String x = input[1];
String y = input[2];
// 初始化列表
List<String> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
// 处理每个人的信息
for (int i = 0; i < n; i++) {
String[] info = scanner.nextLine().split("-");
String surname = info[0];
String name = info[1];
int score = Integer.parseInt(info[2]);
String id = info[3];
// 将所有姓为x的字符串放入list1中
if (surname.equals(x)) {
list1.add(surname + "-" + name + "-" + score + "-" + id);
}
// 将名字为y(忽略大小写)的字符串取出放入list2中
if (name.equalsIgnoreCase(y)) {
list2.add(surname + "-" + name + "-" + score + "-" + id);
}
}
// 输出list1
System.out.println("list1:");
for (String str : list1) {
System.out.println(str);
}
// 输出list2
System.out.println("list2:");
for (String str : list2) {
System.out.println(str);
}
// 对list2中的字符串按成绩进行降序排序并输出
Collections.sort(list2, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return Integer.parseInt(o2.split("-")[2]) - Integer.parseInt(o1.split("-")[2]);
}
});
System.out.println("list2 sorted by score:");
for (String str : list2) {
System.out.println(str);
}
}
}
```
示例输入:
```
5-zhang-san
zhang-san-90-0001
li-si-80-0002
zhang-wu-85-0003
wang-wu-95-0004
zhang-xiao-88-0005
```
示例输出:
```
list1:
zhang-san-90-0001
zhang-wu-85-0003
zhang-xiao-88-0005
list2:
zhang-san-90-0001
zhang-wu-85-0003
zhang-xiao-88-0005
list2 sorted by score:
zhang-san-90-0001
zhang-xiao-88-0005
zhang-wu-85-0003
```
阅读全文