丨丨丨丨丨丨丨丨丶 2022-05-08 23:11 采纳率: 83.3%
浏览 176
已结题

如何从十个同学的身份证中提取每个同学的生日?(语言-java)

用户自己输入十个同学的身份证,并提取每个同学的生日,并且统计每个月有多少同学生日。用Java中的substring来提取生日。 不可以使用map来统计月份 ,因为本人还没有学到这个知识点。最好把所有的代码写出来,就是这道题目要把我搞死了

  • 写回答

8条回答 默认 最新

  • 军哥孤独枫 2022-05-09 10:20
    关注

    1)代码有详细的注释,给你直接上代码,用的是substring
    2)输入数据,程序运行后,直接copy粘贴后,回车,就有结果了
    431024199702097816
    431024199701097816
    431024199703097816
    431024199703057816
    431024199704017816
    q
    2)运行结果图

    img

    img

    3)实现代码

    
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * @author pcj
     * @date 2022/5/9
     * @note https://ask.csdn.net/questions/7712769
     */
    public class T5 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            List<String> identityIds = new ArrayList<String>();
            //身份证号码验证
            String regex = "^[1-9]\\d{5}(18|19|20|(3\\d))\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$";
            Pattern pattern =Pattern.compile(regex);
    
            //操作提示语
            System.out.println("操作提示:回车结束一个身份证输入");
            System.out.println("操作提示:q结束输入");
    
            //接受输入
            while (true){
                String identityId = scanner.next();
                if (identityId.equals("q")){
                    System.out.println("当前已输入" + identityIds.size() + "个身份证");
                    System.out.println("输入结束,开始统计。。。");
                    break;
                } else {
                    Matcher matcher = pattern.matcher(identityId);
                    if (matcher.find()) {
                        identityIds.add(identityId);
                    } else {
                        System.out.println("格式不对,请重新输入");
                    }
                }
            }
    
            Integer month01count=0, month02count=0,month03count=0,month04count=0, month05count=0,month06count=0,
                    month07count=0, month08count=0,month09count=0,month10count=0, month11count=0,month12count=0;
            //开始统计
            for (String identityId : identityIds) {
                String  birthday= identityId.substring(6, 14);
                Integer monthint = Integer.parseInt(birthday.substring(4,6));
                switch (monthint){
                    case 1:
                        month01count++;
                        break;
                    case 2:
                        month02count++;
                        break;
                    case 3:
                        month03count++;
                        break;
                    case 4:
                        month04count++;
                        break;
                    case 5:
                        month05count++;
                        break;
                    case 6:
                        month06count++;
                        break;
                    case 7:
                        month07count++;
                        break;
                    case 8:
                        month08count++;
                        break;
                    case 9:
                        month09count++;
                        break;
                    case 10:
                        month10count++;
                        break;
                    case 11:
                        month11count++;
                        break;
                    case 12:
                        month12count++;
                        break;
                }
            }
    
            System.out.println("1月生日的同学有:" + month01count + " 个");
            System.out.println("2月生日的同学有:" + month02count + " 个");
            System.out.println("3月生日的同学有:" + month03count + " 个");
            System.out.println("4月生日的同学有:" + month04count + " 个");
            System.out.println("5月生日的同学有:" + month05count + " 个");
            System.out.println("6月生日的同学有:" + month06count + " 个");
            System.out.println("7月生日的同学有:" + month07count + " 个");
            System.out.println("8月生日的同学有:" + month08count + " 个");
            System.out.println("9月生日的同学有:" + month09count + " 个");
            System.out.println("10月生日的同学有:" + month10count + " 个");
            System.out.println("11月生日的同学有:" + month11count + " 个");
            System.out.println("12月生日的同学有:" + month12count + " 个");
            System.out.println("统计结束");
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月10日
  • 已采纳回答 5月9日
  • 修改了问题 5月9日
  • 修改了问题 5月9日
  • 展开全部

悬赏问题

  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?