这里还是给出我前后写的两个代码,我总结了一下思路以及后者对于前者的优点; 思路: 1、从键盘录入数据:吸取上一道题目的教训,我采用了高效的字节流录入数据,相对于Scanner速度果然快了不少; 2、遍历录入的身份证号码,依次判断是否合法; 3、如果全部合法,则输出 All passed;否则输出不合法的身份证号码; 难点: 1、在进行判断身份证号码是否合法的时候,必须要考虑如和保存这个结果? 我最开始采用了键值对集合(LinkedHashMap),键是字符串,值是布尔类型的数据,然后遍历集合,如果集合的值没有false,就输出 All passed,否则输出值为false的键;但是这样的做法很不好,显得代码很多; 后来想到可以在判断的时候将不合法的身份证号码存入集合当中(ArrayList),如果这个集合个数大于0,就输出所有元素,否则输出 All passed,这样写很简洁。 2、最开始在进行校验的时候,我把字符串转为char[]传递给方法,其实没有必要这样左,并且代码在测试的时候报错了,不能将’X’转为int类型数据,后来采用了直接传递字符串给方法,然后用到了String类中的一个成员方法charAt()来校验,获取到身份证号码每个数字之后先判断是否为数字,不是直接返回false,是数字让该字符减去’0’,就解决了字符不能转为int的问题;最终加权求和取余,返回是否等于最后一位字符。
1031 查验身份证(Java实现)<查验身份证号>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。