如何修改正确method

题设如下 需要用boolean检查唯一ID的可用性
例如
输入:(“PSQLI2970GY111242”)
输出:true

img

img

遍历字符串,如果是数字,就得累加,用最后一个数字除以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;
            }
        }
    }

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632