7-4 jmu-Java-02基本语法-03-身份证排序 (10分)

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

注意:处理输入的时候,全部使用Scanner的nextLine()方法,以免出错。
7-4 jmu-Java-02基本语法-03-身份证排序 (10分)_第1张图片


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

public class Demo3 {
    public static void main(String[] args) throws ParseException {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.nextLine();
        String[] str = new String[n];
        List list = new ArrayList();
        for (int i = 0; i < str.length; i++) {
            str[i] = sc.nextLine();
            list.add(str[i].substring(6, 14));
        }
        Sort sort = new Sort();
        while (sc.hasNext("sort[12]")) {
            switch (sc.nextLine()) {
                case "sort1":
                    Date[] dates = sort.sortShort(list, n);
                    for (int i = 0; i < n; i++) {
                        System.out.println(String.format("%tF", dates[i]));
                    }
                    break;
                case "sort2":
                    sort.sortShort(list, n);
                    sort.sortShort(str);
                    break;
            }
        }
          sc.close();
        System.out.println("exit");

    }
}

class Sort {
    Date[] date;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

    Date[] sortShort(List list, int n) throws ParseException {
        date = new Date[n];
        for (int i = 0; i < n; i++) {
            date[i] = sdf.parse(list.get(i).toString());
        }

        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - 1 - i; j++) {
                if (date[j].getTime() > date[j + 1].getTime()) {
                    Date a = date[j + 1];
                    date[j + 1] = date[j];
                    date[j] = a;
                }
            }
        }
        return date;

    }

    void sortShort(String[] s) {
        for (int i = 0; i < s.length; i++) {
            for (int j = 0; j < s.length; j++) {
                if (s[j].substring(6, 14).equals(sdf.format(date[i]))) {
                    System.out.println(s[j]);
                }
            }
        }
    }
}

你可能感兴趣的:(7-4 jmu-Java-02基本语法-03-身份证排序 (10分))