问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用java写一个方法,转入一个身份证号,判断该身份证末位是否合法

发布网友 发布时间:2022-04-29 22:28

我来回答

2个回答

热心网友 时间:2023-10-09 18:49

/**
* 功能:身份证的有效验证
*
* @param IDStr 身份证号
* @return 有效:返回"" 无效:返回String信息
* @throws NumberFormatException
* @throws ParseException
*/
public static String IDCardValidate(String IDStr) {
String errorInfo = "";// 记录错误信息
String[] ValCodeArr = { "1", "0", "x", "9", "8", "7", "6", "5", "4",
"3", "2" };
String[] Wi = { "7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7",
"9", "10", "5", "8", "4", "2" };
String Ai = "";
// ================ 号码的长度 15位或18位 ================
if (IDStr.length() != 15 && IDStr.length() != 18) {
errorInfo = "身份证号码长度应该为15位或18位。";
return errorInfo;
}
// =======================(end)========================

// ================ 数字 除最后以为都为数字 ================
if (IDStr.length() == 18) {
Ai = IDStr.substring(0, 17);
} else if (IDStr.length() == 15) {
Ai = IDStr.substring(0, 6) + "19" + IDStr.substring(6, 15);
}
if (isNumeric(Ai) == false) {
errorInfo = "身份证15位号码都应为数字 ; 18位号码除最后一位外,都应为数字。";
return errorInfo;
}
// =======================(end)========================

// ================ 出生年月是否有效 ================
String strYear = Ai.substring(6, 10);// 年份
String strMonth = Ai.substring(10, 12);// 月份
String strDay = Ai.substring(12, 14);// 月份
if (isDataFormat(strYear + "-" + strMonth + "-" + strDay) == false) {
errorInfo = "身份证生日无效。";
return errorInfo;
}
GregorianCalendar gc = new GregorianCalendar();
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
try {
if ((gc.get(Calendar.YEAR) - Integer.parseInt(strYear)) > 150
|| (gc.getTime().getTime() - s.parse(
strYear + "-" + strMonth + "-" + strDay).getTime()) < 0) {
errorInfo = "身份证生日不在有效范围。";
return errorInfo;
}
} catch (NumberFormatException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
return errorInfo = "身份证生日无效";
} catch (ParseException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
return errorInfo = "身份证生日无效";
}
if (Integer.parseInt(strMonth) > 12 || Integer.parseInt(strMonth) == 0) {
errorInfo = "身份证月份无效";
return errorInfo;
}
if (Integer.parseInt(strDay) > 31 || Integer.parseInt(strDay) == 0) {
errorInfo = "身份证日期无效";
return errorInfo;
}
// =====================(end)=====================

// ================ 地区码时候有效 ================
Hashtable h = GetAreaCode();
if (h.get(Ai.substring(0, 2)) == null) {
errorInfo = "身份证地区编码错误。";
return errorInfo;
}
// ==============================================

// ================ 判断最后一位的值 ================
int TotalmulAiWi = 0;
for (int i = 0; i < 17; i++) {
TotalmulAiWi = TotalmulAiWi
+ Integer.parseInt(String.valueOf(Ai.charAt(i)))
* Integer.parseInt(Wi[i]);
}
int modValue = TotalmulAiWi % 11;
String strVerifyCode = ValCodeArr[modValue];
Ai = Ai + strVerifyCode;

if (IDStr.length() == 18) {
if (Ai.equals(IDStr) == false) {
errorInfo = "身份证无效,不是合法的身份证号码";
return errorInfo;
}
} else {
return "";
}
// =====================(end)=====================
return "";
}

热心网友 时间:2023-10-09 18:49

那不是都合法?????
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑wifi已禁用怎么打开电脑无线网络禁用了怎么恢复 ...禁用网络在哪重开win7笔记本无线网络被禁用了怎么办 win7网络禁用怎么恢复 windows7网络被禁用怎么恢复 Win7系统本地连接禁用了怎么恢复Win7系统启动本地连接的两种方法图文... 梦见家人去世什么预兆 ...经缝针现在基本痊愈,一个月过去了现在就是小腿还不能贴大腿,最近感... 小腿缝针拆线三个月了表皮长好了里面的肉怎么有点带黑红色还有点白色... 小腿迎面骨掉快深宽都1厘米左右的肉。当时没缝针。已经20天了。天天... 运费和快递费各走 什么科目? 快递费用放什么科目 (巧)字猜个数字是几 (巧)字猜个数字是几? 怎样在JAVA判断出生日期 和 身份证中的出生日期 相等! 京东上卖的祖马龙香水是真的吗 祖马龙香水是真是假? 冰箱里有调温度的,1-5,冬天该用几? 冰箱冬天开数字几最合适 刚果的一些人文地理 tcl电视多屏互动同一个网络怎么连接不上呢 虹桥站走到到虹桥机场t2一般到哪里接机为啥我找不到&#xF31A;? 携程接机怎么用 导游在机场接机的程序是怎样的? 请翻译下英文 多谢 急!帮我看看这句的英文怎么翻译比较好呢 万分感谢 库看TV多屏互动怎么实现? 如果公司派你去机场接机,对方是一位英国女士,你应该做好哪些安排,要注意的 第二段英文什么意思 求翻译跪求 接一个外国客人,Amiel Anedo,贝尔高林公司的,怎么写英文的接机牌,急急急!! 接机牌(英文)怎么写 急!!! excel 可不可以这样?表格随着输入的内容而自动变化? 巧媳妇猜一个数字 在java中对身份证号码分析中不能出现全是字母怎么对其进行条件判断 寻宝全靠巧,猜一数字几? java 程序判断身份证最后一位是不是大写X 凑巧凑巧真凑巧猜一数字 巧夺天工打一数字? Java 判断身份证格式 楹联对仗,巧猜一个数字 巧媳妇打一数字 java程序怎么判断身份证是不是未成年? 弄巧成拙。打一个数字是几? 百度的内容没有了语音 巧舌把人骗打一0至9数字 百度语音怎样找 巧设连环计打一个数字 巧夺天工?打一数字 金立手机里的百度语音播报如何开启 一双巧手打一数字 百度语音播报功能为什么不能用? 惠普笔记本键盘不能打字了按哪个键恢复- 问一问