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;
}