7-16 jmu-Java-02基本语法-03-身份证排序(Java for PTA)

发布时间:2024年01月02日
  1. 输入n,然后连续输入n个身份证号。
  2. 然后根据输入的是sort1还是sort2,执行不同的功能。输入的不是sort1或sort2,则输出exit并退出。
    输入sort1,将每个身份证的年月日抽取出来,按年-月-日格式组装,然后对组装后的年-月-日升序输出。
    输入sort2,将所有身份证按照里面的年月日升序输出。

注意:处理输入的时候,全部使用ScannernextLine()方法,以免出错。

输入样例:

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

import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
 
        int n = scanner.nextInt();
        scanner.nextLine();
 
        List<String> idList = new ArrayList<>();
 
        for (int i = 0; i < n; i++) {
            String id = scanner.nextLine();
            idList.add(id);
        }
 
        String input;
        while (true) {
            input = scanner.nextLine();
 
            if (input.equals("sort1")) {
                sortByIdDate(idList);
            } else if (input.equals("sort2")) {
                sortById(idList);
            } else {
                System.out.println("exit");
                break;
            }
        }
 
        scanner.close();
    }
 
    public static void sortByIdDate(List<String> idList) {
        List<String> sortedList = new ArrayList<>();
        //思路:创建一个新的List去存储新的格式:year-month-day;
        for (String id : idList) {
            String year = id.substring(6, 10);
            String month = id.substring(10, 12);
            String day = id.substring(12, 14);
 
            String formattedDate = year + "-" + month + "-" + day;
 
            sortedList.add(formattedDate);
        }
 
        Collections.sort(sortedList);
        //遍历排序后的List
        for (String date : sortedList) {
            System.out.println(date);
        }
    }
 
    public static void sortById(List<String> idList) {
        List<String> sortedList = new ArrayList<>(idList);
        //思路:既然不改变原有输出格式:那就修改比较器的比较条件
        Collections.sort(sortedList,new Comparator<String>(){
            @Override //重写比较器
            public int compare(String id1,String id2){
                String sub1 = id1.substring(6,14);
                String sub2 = id2.substring(6,14);
                return sub1.compareTo(sub2);
                //if sub1 < sub2 return -1
                //sub1 == sub2 return 0 || sub1>sub2 return 1;
            }
        });
 
        for(String id:sortedList){
            System.out.println(id);
        }
    }
}

文章来源:https://blog.csdn.net/WeFun_Han/article/details/135333131
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。