输入n,然后连续输入n个身份证号。
然后根据输入的是sort1还是sort2,执行不同的功能。输入的不是sort1或sort2,则输出exit并退出。
输入sort1,将每个身份证的年月日抽取出来,按年-月-日格式组装,然后对组装后的年-月-日升序输出。
输入sort2,将所有身份证按照里面的年月日升序输出。
注意:处理输入的时候,全部使用Scanner的nextLine()方法,以免出错。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) throws ParseException {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
String[] str = new String[n];
List list = new ArrayList();
for (int i = 0; i < str.length; i++) {
str[i] = sc.nextLine();
list.add(str[i].substring(6, 14));
}
Sort sort = new Sort();
while (sc.hasNext("sort[12]")) {
switch (sc.nextLine()) {
case "sort1":
Date[] dates = sort.sortShort(list, n);
for (int i = 0; i < n; i++) {
System.out.println(String.format("%tF", dates[i]));
}
break;
case "sort2":
sort.sortShort(list, n);
sort.sortShort(str);
break;
}
}
sc.close();
System.out.println("exit");
}
}
class Sort {
Date[] date;
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date[] sortShort(List list, int n) throws ParseException {
date = new Date[n];
for (int i = 0; i < n; i++) {
date[i] = sdf.parse(list.get(i).toString());
}
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (date[j].getTime() > date[j + 1].getTime()) {
Date a = date[j + 1];
date[j + 1] = date[j];
date[j] = a;
}
}
}
return date;
}
void sortShort(String[] s) {
for (int i = 0; i < s.length; i++) {
for (int j = 0; j < s.length; j++) {
if (s[j].substring(6, 14).equals(sdf.format(date[i]))) {
System.out.println(s[j]);
}
}
}
}
}