用java写一个方法,转入一个身份证号,判断该身份证末位是否合法
发布网友
发布时间:2022-05-13 18:24
我来回答
共2个回答
热心网友
时间:2023-10-20 11:02
/**
* 功能:身份证的有效验证
*
* @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-20 11:03
那不是都合法?????
用java写一个方法,转入一个身份证号,判断该身份证末位是否合法
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", ...
使用java判断输入身份证号位数是否正确?判断输入是否有效?
public static void getString(){\x0d\x0a String a,b;\x0d\x0a while (true) {\x0d\x0a Scanner input = new Scanner(System.in);\x0d\x0a System.out.println("请输入您的18位身份证号码!!");\x0d\x0a a = (String) input.next();\x0d\x0a if (a...
用JAVA语言从键盘上输入一个身份证号码:回车之后,判断是否为正确号码...
import java.util.*;public class Identity{ public static void main(String args[]){ Scanner s=new Scanner(System.in);System.out.print("请输入你的身份证号码(必须为数字或x):");String l=s.nextLine();if(l==""){ System.out.print("身份证号码不能为空!");} else if(l.leng...
java编程,关于身份证验证问题。求大神指点
import java.util.*;public class test{public static void main(String[] args) {Scanner in=new Scanner(System.in);System.out.println("请输入18位的身份号码:");String s="^[0-9]{17}([0-9]|x)";//正则表达式String str=in.next();while(!str.matches(s)){//用mathes方法匹配...
java字符串操作,验证输入的身份证合法与否
要求:如果输入的身份证不是18位,或者格式不正确(包含非数字字符,除了最后一位的X除外)则返回一个字符串“您输入的身份证号码有误”/ import java.util.Scanner;public class JudgeID { public static void main(String[] args){ Scanner reader = new Scanner(System.in);System.out.println("...
java怎么验证身份证合法,
//身份证正则表达式(18位)isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;地区、性别和身份证进行判断的正则表达式: var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林...
java 程序判断身份证最后一位是不是大写X
public class $ { public static void main(String[] args) { String id = "12345678901234567x"; // 由于身份证号最多有一个x,所以可以直接替换 id = id.toUpperCase(); System.out.println(id); }}
在java后台,用正则表达式验证身份证
private String checkPattern(String str){ String len;String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";Pattern p = Pattern.compile(regEx);Matcher m = p.matcher(str);len=m.replaceAll(""...
在java中身份证号码前17位必须是数字,后一位可以是字符,如果不是提示...
使用正则表达式即可!如:String regex="\\d{17}." //正则表达式,前17位数字,后1一位为任意字符 //定义一个身份证String字符串 String string="12345678912345678x"//验证身份证 if(!string.matches(regex))System.out.println("身份证错误");
java判断输入的18位数(最后一位可能是x)的身份证是否合法
super("检查身份证号");setBounds(0,0,400,60);setResizable(false);setLayout(new java.awt.FlowLayout());setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);txtIDNumber=new JTextField(18);add(txtIDNumber);btnCheck=new JButton("检查");btnCheck.addActionListener(new ActionListener(){ pub...