PTA jmu-Java-02基本语法-03-身份证排序分数 15

  1. 输入n,然后连续输入n个身份证号。

  1. 然后根据输入的是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

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        ArrayList<String> list = new ArrayList<>();
        ArrayList<String> dateList = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            String str = sc.next();
            list.add(str);
            dateList.add(str.substring(6,15));
        }
        String[] arr = new String[dateList.size()];
        dateList.toArray(arr);
        Arrays.sort(arr);
        while (true){
            String sort = sc.next();
            if(sort.equals("sort1")){
                for (int i = 0; i < arr.length; i++) {
                    System.out.println(arr[i].substring(0,4) + "-" + arr[i].substring(4,6) + "-" + arr[i].substring(6,8));
                }
            }else if(sort.equals("sort2")){
                for (int i = 0; i < list.size(); i++) {
                    for (int j = 0; j < list.size(); j++) {
                        if(arr[i].equals(list.get(j).substring(6,15))){
                            System.out.println(list.get(j));
                            break;
                        }
                    }
                }
            }else{
                System.out.println("exit");
                break;
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是Java代码实现: ```java import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; public class Main { public static void main(String[] args) throws ParseException { Scanner scanner = new Scanner(System.in); System.out.print("请输入身份证号个数:"); int n = scanner.nextInt(); scanner.nextLine(); // 读取n后需要使用nextLine()将回车符读取掉 List<String> idList = new ArrayList<>(); for (int i = 0; i < n; i++) { System.out.print("请输入身份证号" + (i + 1) + ":"); String id = scanner.nextLine(); idList.add(id); } SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); List<Date> dateList = new ArrayList<>(); for (String id : idList) { String birthday = id.substring(6, 14); Date date = sdf.parse(birthday); dateList.add(date); } Collections.sort(dateList); SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd"); System.out.println("身份证号按生日排序后为:"); for (Date date : dateList) { System.out.println(outputFormat.format(date)); } } } ``` 运行程序后,先输入身份证号个数n,然后输入n个身份证号。程序会按照输入的顺序逐个读取身份证号,将每个身份证的年月日抽取出来,按照年-月-日格式组装,然后对组装后的年-月-日升序输出。例如,输入身份证号个数为3,然后依次输入身份证号 `110101199003077978`、`110101197609122248`、`110101199102221254`,程序会输出: ``` 身份证号按生日排序后为: 1976-09-12 1990-03-07 1991-02-22 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不再言语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值