输入n,然后连续输入n个身份证号。 然后根据输入的是sort1还是sort2,执行不同的功能。输入的不是sort1或sort2,则输出exit并退出。 输入sort1,将每个身份证的年月日抽取出来,按年-月-日格式组装,然后对组装后的年-月-日升序输出。 输入sort2,将所有身份证按照里面的年月日升序输出。 注意:处理输入的时候,全部使用Scanner的nextLine()方法,以免出错。 输入样例: 6 410425198309308225 320203197206115011 431227196108033146 330226196605054190 34080019810819327X 320111197112301539 sort1 sort2 e 输出样例: 1961-08-03 1966-05-05 1971-12-30 1972-06-11 1981-08-19 1983-09-30 431227196108033146 330226196605054190 320111197112301539 320203197206115011 34080019810819327X 410425198309308225 exit用JAVA语言
时间: 2024-02-18 22:00:54 浏览: 53
python练习题 :用户任意输入10个整数到列表中,然后由大到小排列并输出。
好的,以下是用Java实现的完整代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.nextLine(); // 读取换行符
String[] ids = new String[n];
for (int i = 0; i < n; i++) {
ids[i] = scanner.nextLine();
}
String sortType;
while (scanner.hasNext()) {
sortType = scanner.nextLine();
if (sortType.equals("sort1")) {
List<String> dates = new ArrayList<>();
for (String id : ids) {
String year = id.substring(6, 10);
String month = id.substring(10, 12);
String day = id.substring(12, 14);
dates.add(year + "-" + month + "-" + day);
}
Collections.sort(dates);
for (String date : dates) {
System.out.println(date);
}
} else if (sortType.equals("sort2")) {
Arrays.sort(ids, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String date1 = o1.substring(6, 14);
String date2 = o2.substring(6, 14);
return date1.compareTo(date2);
}
});
for (String id : ids) {
System.out.println(id);
}
} else {
System.out.println("exit");
break;
}
}
scanner.close();
}
}
```
程序首先读取输入的n和n个身份证号,并存储到一个字符串数组中。然后使用while循环读取输入的sort1或sort2,如果输入的不是这两个字符串,则输出exit并退出循环。
如果输入的是sort1,则遍历身份证号,将每个身份证的年月日抽取出来,并按照“年-月-日”格式组装到一个字符串列表中。然后对字符串列表进行升序排序,并输出排序后的每个日期字符串。
如果输入的是sort2,则使用Arrays.sort()方法对身份证号进行升序排序。由于需要按照身份证中的年月日排序,因此需要传入一个Comparator对象来指定比较规则。在这里,我们定义一个匿名内部类实现Comparator接口,将每个身份证中的出生年月日(即身份证号的第7-14位)作为排序依据。最后输出排序后的每个身份证号。
如果输入的不是sort1或sort2,则输出exit并退出程序。
程序使用了Scanner类来读取输入,并在读取完整行后使用nextLine()方法读取换行符。最后在程序结束时关闭Scanner对象。
阅读全文