题设如下 需要用boolean检查唯一ID的可用性
例如
输入:(“PSQLI2970GY111242”)
输出:true
遍历字符串,如果是数字,就得累加,用最后一个数字除以11的余数跟最后1位比较
digit[j] = (int)a这里不对,应该是
digit[j] = a-'0';
累计求和那个for循环里面,不应该用 i < ID.length(),应该用 i<j
最后判断的地方,当余数不是10的时候,余数应该跟ID的最后一个字符相等。
代码修改如下:
public static boolean isValidId(String ID){
if(ID.length() < 5)
return false;
else{
int j = 0;
int[] digit = new int[ID.length()];
for(int i = 0; i<ID.length();i++){
char a = ID.charAt(i);
if(Character.isDigit(a)){
digit[j] = a - '0'; //修改1
j++;
}
}
int sum = 0;
for(int i = 0;i<j;i++){
sum = sum + digit[i];
}
int t = sum % 11;
char ends = ID.charAt(ID.length() -1);
if( (t == 10 && ID.endsWith("X")) || (t !=10 && t==(ends-'0')) ){
return true;
}else{
return false;
}
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!