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

  1. 输入n,然后连续输入n个身份证号。
  2. 然后根据输入的是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.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		String[] caridS = new String[n];
		for(int i=0;i<n;i++) {
			String carIdString = scan.next();
			caridS[i] = carIdString;
		}
		Comparator<String> com = new MyComparator();
		Arrays.sort(caridS,com);
		
		boolean loop = true;
		while(loop) {
			String inputString = scan.next();
			switch (inputString) {
			case "sort1":
				for (String carid : caridS) {
					System.out.println(carid.substring(6, 10)+"-"+carid.substring(10, 12)+"-"+carid.substring(12,14));
				}
				break;

			case "sort2":
				for (String carid : caridS) {
					System.out.println(carid);
				}
				break;
				
			default:
				System.out.println("exit");
				loop = false;
				break;
			}
		}
		
		
	}
}

class MyComparator implements Comparator<String>{

	@Override
	public int compare(String o1, String o2) {
		return o1.substring(6, 15).compareTo(o2.substring(6, 15));
		
	}
	
}

总结:
本题技术难点在于对字符串的排序,我使用的是
Arrays.sort(caridS,com);
方法对字符串进行排序,Arrays.sort只传入一个数组时会是对每一个元素进行排序,但是我要的是对每一个身份证上的出生年月进行排序,所以我通过创建MyComparator 类的方式自定义排序了数组。Arrays.sort三种用法可查看https://blog.csdn.net/vvcbvv/article/details/109813934

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值