用Java实验身份证号的校验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
import java.util.*;
public class Idnumber {
public static void main(String[] args)
{
String s; //定义身份证号码为字符串变量s
char a[]; //数组t[]用来存放18位身份证号码
a=new char[18]; //ta用来存放18位身份证的整型
int b[]= new int[18];
Idnumber getr = new Idnumber();
Idnumber turnr =new Idnumber();
Idnumber thinkr =new Idnumber();
Idnumber writer = new Idnumber();
s=writer.write();
getr.qushu(s, a);
turnr.turn(a,b);
thinkr.think(a,b);
}
public void qushu(String s,char a[]){ //将18位身份证号取出放在数组中for(int i=0;i<18;i++)
{
a[i]=s.charAt(i);
}
}
public void turn(char a[],int b[]){ //将字符型转化为整型
for(int i=0;i<18;i++)
{
b[i]=(int)a[i];
b[i]=b[i]-48;
}
}
public void think(char a[],int ta[]){ //进行身份证号的判断
int i = 0;
int sum=0; //sum用来存放身份证前17位的加权
int y; //y用来存放sum的模,进行比较
int c[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; //c用来存放权重
char x[]={'1','0','X','9','8','7','6','5','4','3','2'}; //x用来存放校检码
int w[]={0,1,2,3,4,5,6,7,8,9,10}; //用来存放y可能的值
for(int j=0;j<17;j++)
{
sum=sum+ta[j]*c[j];
}
y=sum%11;
while(i<12)
{
if(y==w[i])
{
break;
}
else
{
i++;
}
}
if(x[i]==a[17])
{
System.out.println("身份证号码合法");
}
else
{
System.out.println("身份证号码不合法");
}
}
public String write(){ //输入函数
String s; //定义输入num为身份证号,name为名字Scanner num = new Scanner(System.in);
System.out.print("请输入身份证号码:");
s=num.next();
return s;
}
}。