A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

[Java] 纯文本查看 复制代码
package myexam.test24;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


/*
 * 
 *  问题:1. 模拟审核身份证的过程,按照以下要求实现相关代码(友情提示:不一定要用正则)(8分)
 *    a.提示用户在控制台输入身份证号,用一个字符串对其进行保存(2分)
 *    b.判断该身份证号位数是否是18位或者16位(2分)
 *    c.判断该身份证号除最后一位外,是否都是数字(2分)
 *    d.将“410124199008010231”身份证号中生日(19900801)获取出来并且打印到控制台上(2分)
 *
 * 
 * 
 */
public class MyTest1 {

	public static void main(String[] args) {
		getId();
	}
	
	//写一个获取省份证好的方法
	public static void getId(){
		System.out.println("请输入省份证号码(15位or18位)");
		//创建一个键盘录入对象
		BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
		String id=null;
		while(true){
			try {
				 id=bufr.readLine();
			} catch (IOException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
			//用正则表达式判断身份证号(规则:16位或18位,末尾可以为子母)
			Pattern idPattern=Pattern.compile("(\\d{15}[0-9a-zA-Z])|(\\d{17}[0-9a-zA-Z])");
			//创建匹配器
			Matcher idMacther=idPattern.matcher(id);
			//判断是否匹配
			if(idMacther.matches()){
				System.out.println("您的出生年月日是:");
				//将字符串转成字符数组
				char[] ch=id.toCharArray();
				for(int i=6;i<=13;i++){
					System.out.print(ch[i]);
				}
			}else{
				System.out.println("您输入的不是身份证号,请继续输入:");
			}
		}
		
	}

}

3 个回复

正序浏览
自己写会遇到问题怎么办
回复 使用道具 举报
你这答案装X的嫌疑很大
回复 使用道具 举报
可以看懂,但是自己写就很难完整写出来,是基础没打好还是练习太少了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马