7-5 jmu-Java-02基本语法-03-身份证排序 --笔记篇 简洁清晰
2024-01-07 20:53:42
题目
输入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.*;
class cp implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
return o1.substring(6,14).compareTo(o2.substring(6,14));
}
}
public class Main {
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
int n=in.nextInt();
in.nextLine();
ArrayList<String> p=new ArrayList<>();
ArrayList<String> p1=new ArrayList<>();
while (n>0){
String l=in.nextLine();
p.add(l);
n--;
}
while (in.hasNext()){
String ll=in.nextLine();
if (ll.equals("sort1"))
{
for(String lll:p)
p1.add(lll.substring(6,10)+'-'+lll.substring(10,12)+'-'+lll.substring(12,14));
Collections.sort(p1);
for (String i:p1)
System.out.println(i);
}
else if (ll.equals("sort2")){
p.sort(new cp());
for (String i:p)
System.out.println(i);
}
else {
System.out.println("exit");
break;
}
}
}
}
笔记
这段代码主要实现了两个排序功能,一个是按照字符串的子串进行排序,另一个是按照字符串的特定位置进行排序。
这段代码主要涉及到了以下知识点:
1.字符串的子串操作:substring方法用于获取字符串的子串。
2.集合的排序和反转:Collections.sort和Collections.reverse方法用于对集合进行排序和反转。
3.自定义比较器:定义了一个实现了Comparator接口的类cp,并重写了compare方法,用于自定义比较规则。
文章来源:https://blog.csdn.net/weixin_52057528/article/details/135438231
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!