6-3 jmu-Java-02基本语法-03-身份证排序 (20 分)

此篇博客介绍了如何接收n个身份证号码,根据sort1和sort2指令进行不同操作:sort1提取并排序年月日,sort2按日期升序排列身份证。使用Scanner的nextLine()方法处理输入,适用于Java编程实现。
摘要由CSDN通过智能技术生成

输入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
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int num = 0;
        ArrayList<Birthday> array = new ArrayList<>();

        while (input.hasNextLine() && num<n) {
            array.add(new Birthday(input.next()));
            num++;
        }

        for (int m = 0; m < array.size(); m++) {
            for (int  i= 0;  i< array.size()-1; i++) {
                if (array.get(i).toInteger() > array.get(i+1).toInteger()) {
                    Birthday temp = array.get(i);
                    array.set(i, array.get(i + 1));
                    array.set(i + 1, temp);
                }
            }
        }

        while (input.hasNextLine()){
             String str = input.next();
            if ("sort1".equals(str)){
               for (int i = 0; i < array.size(); i++) {
                    System.out.println(array.get(i));
                }
            } else if ("sort2".equals(str)) {
                for (int i = 0; i < array.size(); i++) {
                    System.out.println(array.get(i).getDate());
                }
            }else {
                System.out.println("exit");
            }
        }
    }

}

class Birthday{

    private String date;
    private String year;
    private String month;
    private String day;

    public Birthday(String date) {
        this.date = date;
        this.year = date.substring(6,10);
        this.month = date.substring(10,12);
        this.day = date.substring(12,14);
    }

    public String getDate() {
        return date;
    }

    public int toInteger(){
        int y = Integer.valueOf(year);
        int m = Integer.valueOf(month);
        int d = Integer.valueOf(day);
        return y*10000 + m*100 + d;
    }


    @Override
    public String toString() {
        return year +
                '-' + month +
                '-' + day ;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值