用户自己输入十个同学的身份证,并提取每个同学的生日,并且统计每个月有多少同学生日。用Java中的substring来提取生日。 不可以使用map来统计月份 ,因为本人还没有学到这个知识点。最好把所有的代码写出来,就是这道题目要把我搞死了
8条回答 默认 最新
- 军哥孤独枫 2022-05-09 10:20关注
1)代码有详细的注释,给你直接上代码,用的是substring
2)输入数据,程序运行后,直接copy粘贴后,回车,就有结果了
431024199702097816
431024199701097816
431024199703097816
431024199703057816
431024199704017816
q
2)运行结果图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("统计结束"); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 1
悬赏问题
- ¥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 如何实现统一的请求异常信息提示?