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

本文介绍了一个简单的Java程序,用于处理身份证号码的日期排序问题。通过读取一系列身份证号,程序可以按照出生日期升序排列,并以年-月-日的格式输出。此外,还提供了按身份证号排序的功能。

链接 PTA

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

  2. 然后根据输入的是sort1还是sort2,执行不同的功能。输入的不是sort1sort2,则输出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.Scanner;

/**
 * 身份证号排序
 * 以前这道题做了很久,不会然后copy别人的
 * 其实今天看来这道题还是挺简单的
 * @author Sakura
 *
 */
public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner (System.in);
		int n;
		n=sc.nextInt();
		String s[]=new String[n];             //装身份证号的
		String birth[]=new String[n];             //这个是装生日的
		
		String str;
		for(int i=0;i<n;i++) {
			s[i]=sc.next();     //并没有用nextLine()感觉那样写没有这么写简单
		}
		while(true) {
			str=sc.next();
			if(str.equals("e")) {
				System.out.println("exit");
				break;
			}else if(str.equals("sort1")) {
				for(int i=0;i<n;i++) {
					birth[i]=s[i].substring(6,10 )+'-'+	s[i].substring(10, 12)+'-'+s[i].substring(12, 14);
					
				}
				Arrays.sort(birth);            //生日先升序
				for(int i=0;i<n;i++) {
					System.out.println(birth[i]);
				}
				
			}else if(str.equals("sort2")) {
				//生日先升序排一下
				for(int i=0;i<n;i++) {
					birth[i]=s[i].substring(6,10 )+	s[i].substring(10, 12)+s[i].substring(12, 14);
					
				}
				Arrays.sort(birth);
				for(int i=0;i<n;i++) {
					for(int j=0;j<n;j++){
						if(s[j].contains(birth[i])) {
							System.out.println(s[j]);
							break;
						}
					}
				}
			}
		}
	}

}
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值