package ex;
import java.util.*;
public class SF {
public static void main(String[] args) {
Scanner console=new Scanner(System.in);
System.out.println("请输入您所需要查询的身份证号码:");
String ID =console.nextLine();
if(ID.length()!=18)
throw new IllegalArgumentException("输入的身份证为数不对!");
else if(check(ID))
{System.out.println("此身份证合法");}
else
System.out.println("此身份是假的");
}
public static boolean check(String ID)
{
int s=0;int y=0;
int []wi={7,9,10,5,8,4 ,2, 1 ,6, 3, 7, 9, 10, 5 ,8 ,4, 2, };
for(int i=1;i<18;i++)
{
s+=(ID.charAt(i-1)-'0')*wi[i-1];
}
y=s;
int n=change(y);
return ID.charAt(17)-n-'0'==0||ID.charAt(17)-n==0;
}
public static char change(int y)
{char n = 0;
switch (y)
{case 0:n=1;break; /// Y: 0 1 2 3 4 5 6 7 8 9 10
case 1:n=0;break; /// 校验码:1 0 x 9 8 7 6 5 4 3 2
case 2:n='x';break;
case 3:n=9;break;
case 4:n=8;break;
case 5:n=7;break;
case 6:n=6;break;
case 7:n=5;break;
case 8:n=4;break;
case 9:n=3;break;
case 10:n=2;break;
}
return n;
}
}
import java.util.*;
public class SF {
public static void main(String[] args) {
Scanner console=new Scanner(System.in);
System.out.println("请输入您所需要查询的身份证号码:");
String ID =console.nextLine();
if(ID.length()!=18)
throw new IllegalArgumentException("输入的身份证为数不对!");
else if(check(ID))
{System.out.println("此身份证合法");}
else
System.out.println("此身份是假的");
}
public static boolean check(String ID)
{
int s=0;int y=0;
int []wi={7,9,10,5,8,4 ,2, 1 ,6, 3, 7, 9, 10, 5 ,8 ,4, 2, };
for(int i=1;i<18;i++)
{
s+=(ID.charAt(i-1)-'0')*wi[i-1];
}
y=s;
int n=change(y);
return ID.charAt(17)-n-'0'==0||ID.charAt(17)-n==0;
}
public static char change(int y)
{char n = 0;
switch (y)
{case 0:n=1;break; /// Y: 0 1 2 3 4 5 6 7 8 9 10
case 1:n=0;break; /// 校验码:1 0 x 9 8 7 6 5 4 3 2
case 2:n='x';break;
case 3:n=9;break;
case 4:n=8;break;
case 5:n=7;break;
case 6:n=6;break;
case 7:n=5;break;
case 8:n=4;break;
case 9:n=3;break;
case 10:n=2;break;
}
return n;
}
}
