题目
分析
- 题目的意思是对身份证号的前十七位进行加权求和,并且取余
- 将余数和对应位置的校验码进行比对
- 我的思路是用数组将权值装起来,这样方便计算和
- 然后再将校验码装入到数组中
- 最后将身份证的最后一位与校验码进行比对
代码
import java.util.*;
public class Main{
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
boolean f = true;
int []qz = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char[]jy = {'1','0','X','9','8','7','6','5','4','3','2'};
for(int i=0;i<n;i++){
String s = sc.next();
int sum = 0;
for(int j=0;j<s.length()-1;j++){
sum = sum+(s.charAt(j)-'0')*qz[j];
}
if(s.charAt(17) != jy[sum%11]){
f = false;
System.out.println(s);
}
}
if(f==true){
System.out.print("All passed");
}
}
}