- 输入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 sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
String[] ids = new String[n];
long[] values = new long[n];
for(int i=0;i<n;i++)
{
ids[i] = sc.nextLine();
values[i] = Long.parseLong(ids[i].substring(6,14));
}
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(values[j]>values[j+1])
{
long temp = values[j];
String t = ids[j];
values[j] = values[j+1];
ids[j] = ids[j+1];
values[j+1] = temp;
ids[j+1] = t;
}
}
}
while(true)
{
String line = sc.nextLine();
if(line.equals("sort1"))
{
for(int i=0;i<n;i++)
{
System.out.println(ids[i].substring(6,10)+"-"+ids[i].substring(10,12)+"-"+ids[i].substring(12,14));
}
}
else if(line.equals("sort2"))
{
for(int i=0;i<n;i++)
{
System.out.println(ids[i]);
}
}
else
{
System.out.println("exit");
break;
}
}
}
}
输入输出:
对sc的理解不够,nextInt不消耗换行符。
nextLine返回字符串
if里写nextLine会吃掉输入,造成sort2读不到输入
排序:
sort排序忘记交换id了
数据处理:
排序标准没想清楚,看清楚排序数据,看好交换内容,选对数据结构。