18位身份证验证(Java)

我的代码:

package day20181016;
/**
* 身份证的验证 34052419800101001X
*
*/
import java.util.Scanner;
public class ZuoYe04 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int[]numArray={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
System.out.println("请输入身份证号:");
String card=input.next();
int sum=0;
for(int i=0;i<numArray.length;i++){
int cardNum=card.charAt(i)-'0';
sum+=cardNum*numArray[i];
}
System.out.println("前17位系数相乘和为:"+sum);
//身份证18位的字符数组
char[]codeArray={ '1','0','X','9','8','7','6','5','4','3','2'};
int index=sum%11;//数组的下标
//将计算出来的第18位字符与身份证的第18位对比
if(codeArray[index]==card.charAt(17)){
System.out.println(card+"身份证合法");
}else{
System.out.println(card+"身份证非法");
}
}
}

原文地址:https://www.cnblogs.com/SUN99bk/p/9821769.html