【思路】
import java.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.valueOf(reader.readLine());
String[] strings = new String[num];
for(int i=0; i <num; i++){
strings[i] = reader.readLine();
}
//判断是否合法,如果合法存入集合
ArrayList<String> list = new ArrayList<>();
for(int i=0; i<num; i++){
if(!isValid(strings[i])){
list.add(strings[i]);//合法则存入下标
}
}
//如果集合长度不为零,将不合法的字符串输出
if(list.size() > 0){
for(int i=0; i<list.size() ;i++){
System.out.println(list.get(i));
}
}else{
System.out.println("All passed");
}
}
private static Boolean isValid(String stringItem){
int[] weight = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char[] base = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
int sum=0;//加权求和
for(int i=0; i<17;i++){
if(stringItem.charAt(i) < '0' || stringItem.charAt(i)>'9'){
return false;
}
sum = sum + (stringItem.charAt(i) - '0') * weight[i];
}
int mod = sum%11;//求余
if(base[mod] != stringItem.charAt(17)){
return false;
}
return true;
}
}

京公网安备 11010502036488号