java身份证
18为身份证号码的第17位数字表示性别:奇数表示男性,偶数表示女性
所有代码中,只要截取出第17位的数字出来就可以判断性别,如:
String sex;
// 判断性别
if (Integer.parseInt(CardCode.substring(16).substring(0, 1)) % 2 == 0) {
sex = "女";
} else {
sex = "男";
}
Ⅱ 利用Java求出有一串身份证的数字,用分号隔开,提取每个身份证号,统计男性和女
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
class Dome{
public static void main(String[] args) throws IOException {
int quantity[]=new int[2];//1表示扒凯男人的个数,0表示女生个数
String card[]=new String[0];//记录身份证号码
String filePath = "D:/aa.txt";//假设你D盘下有一个aa.txt文件中存放着身份证号码
FileInputStream fin;
try {
fin = new FileInputStream(filePath);//从filePath中获得输入字节
BufferedReader buffReader = new BufferedReader(new InputStreamReader(fin));
String str = "";//用于暂存读取的内容
str = buffReader.readLine();//按行读取内容给str,只读取一行
card=new String[str.length()/17];//因为不知道身份证号码的数量,所以创建可能有的数量
int p=0;//记悔旅录card的数量
for(int i=0;i<str.length();i++){
if(str.indexOf(",",i)!=-1){//判断是否是最后一个逗号
card[p]=str.substring(i,str.indexOf(",",i));//截取对应的身份证号码,这里用的是英文逗号
System.out.println(card[p]);
i=str.indexOf(",", i);//跳到以及处理过的结果末尾
}else{
card[p]=str.substring(i,str.length());
System.out.println(card[p]);
break;//结尾结束循环
}
p++;
}
buffReader.close();//关闭文件流
for(int i=0;i<card.length;i++){
if(card[i].length()==18){//判断是否出错
quantity[((int)card[i].charAt(16)-48)%2]++;//计算第17位是奇数或偶数并对应相加
}
}
System.out.println("男生数量:"+quantity[0]);//输出男生结果
System.out.println("女生数量:"+quantity[1]);//输出女生结果
} catch (FileNotFoundException e) {
System.out.println(e);//输出碧此凳错误原因
}
}
}
不知道符不符合你的要求
Ⅲ JAVA写一个程序,要求输入身份证号获取所在地区代码也就是前六位,和出生年月。
importjava.util.*;
publicclassYugi{
publicstaticvoidmain(String[]args){
Scannerscan=newScanner(System.in);
System.out.println("输入身份证号码:");
Stringcode=scan.nextLine().trim();
scan.close();
Stringreg="^(.{6})(.{4})(.{2}).*$";
Stringa=code.replaceAll(reg,"$1");
Stringy=code.replaceAll(reg,"$2");
Stringm=code.replaceAll(reg,"$3");
System.out.println("所在地区代码:"+a);
System.out.println("出生年月:"+y+","+m);
}
}
Ⅳ 在java中身份证号码前17位必须是数字,后一位可以是字符,如果不是提示错误怎么
使用正则表达式即可!
如:
String regex="\\d{17}." //正则表达式,前17位数字,后1一位为任意字符
//定义一个身份证String字符串
String string="12345678912345678x"
//验证身份证
if(!string.matches(regex))
System.out.println("身份证错误");
Ⅳ 用Java从任意给定的身份证号码中提取此人的出生日期
用Java从任意给定的身份证号码中提取此人的出生日期,例子如下:
publicclassTestC{
publicstaticvoidmain(String[]args){
//18位的第二代身份证,出生日期是从7位到14位是出生日期
Stringstr="450919199903050123";
//字符串截取下标从0开始的
Stringbirthday=str.substring(6,14);
System.out.println(birthday);
}
}
结果:
19990305
Ⅵ java身份证号位数校验
function checkIdcard(num)
{
num = num.toUpperCase();
//身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num)))
{
//alert('输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。');
return false;
}
//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
//下面分别分析出生日期和校验位
var len, re;
len = num.length;
if (len == 15)
{
re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
var arrSplit = num.match(re);
//检查生日日期是否正确
var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay)
{
//alert('输入的身份证号里出生日期不对!');
return false;
}
else
{
//将15位身份证转成18位
//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
for(i = 0; i < 17; i ++)
{
nTemp += num.substr(i, 1) * arrInt[i];
}
num += arrCh[nTemp % 11];
return true;
}
}
if (len == 18)
{
re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
var arrSplit = num.match(re);
//检查生日日期是否正确
var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay)
{
//alert(dtmBirth.getYear());
//alert(arrSplit[2]);
//alert('输入的身份证号里出生日期不对!');
return false;
}
else
{
//检验18位身份证的校验码是否正确。
//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var valnum;
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
for(i = 0; i < 17; i ++)
{
nTemp += num.substr(i, 1) * arrInt[i];
}
valnum = arrCh[nTemp % 11];
if (valnum != num.substr(17, 1))
{
//alert('18位身份证的校验码不正确!应该为:' + valnum);
return false;
}
return true;
}
}
return false;
}
var result = checkIdcard(sfzh);
if (!result)
{
$.messager.alert('提示信息','身份证号码格式不正确');
return;
}