35 lines
1003 B
Java
35 lines
1003 B
Java
package Course_Codes;
|
||
|
||
import java.util.Scanner;
|
||
//身份证号合理性验证
|
||
public class 身份证号合理性验证 {
|
||
|
||
public static void main(String[] args) {
|
||
String idCard="";//存储身份证(尾号可能出现X,因此用String)
|
||
//身份证各数字权值:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
|
||
int [] w= {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1};
|
||
//权值对11取余的值
|
||
String [] last= {"1","0","X","9","8","7","6","5","4","3","2"};
|
||
|
||
System.out.println("Please input your ID:");
|
||
Scanner sc=new Scanner(System.in);
|
||
idCard =sc.nextLine();
|
||
|
||
//截取身份证号前17位
|
||
String id_17=idCard.substring(0,17);
|
||
|
||
int sum=0;
|
||
for(int i=0;i<id_17.length();i++) {
|
||
//将String类型的身份证号转化为整型
|
||
int n=Integer.parseInt(id_17.substring(i,i+1));//法2:charAt(i-'0');
|
||
sum=sum+n*w[i];
|
||
}
|
||
System.out.printf("sum=%d,sum=%%11=%d\n",sum,sum%11);
|
||
if(idCard.substring(17,18).equals(last[sum%11]))
|
||
System.out.println("Yes");
|
||
else
|
||
System.out.print("No");
|
||
}
|
||
|
||
}
|