输入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 ;
}
}