Java 方法isbn char 转换和输出问题。无法找出算法中的错误

Java methods isbn char conversion and output problems. Can't find out mistake in algorithm

我正在尝试创建一个 returns char 类型的方法。条件是这样的:系统从用户输入中获取 9 位数字并进行计算。该方法转换 nextLine() 输入中的每个字符并计算总和,然后取 % 11。如果余数为 10,方法 return 'X',如果余数为 0 到 9,则方法 return是那个数字,但必须是字符类型。到目前为止,我不明白为什么它总是输出“/”而没有别的。请帮我找出我算法的错误。

public static char getCheckSum(String isbn) {
    int sum = 0;
    char charSum;
    for (int i = 0; i < isbn.length(); i++) {
        int[] num = new int[isbn.length()]; 
        num[i] = Character.getNumericValue(i) * (i+1);
        sum = sum + num[i];
    }
    int last = (sum % 11);

    if (last == 10){
        charSum = (char) 88;
    } else {
        charSum = (char) (last + 48);
    }
    return charSum;

//这是下一部分插入连字符作为参考

public static String formatISBNWithHyphens(String isbn) {
    // original isbn:       123456789
    // possible new isbn:   1-234-56789-X
    char isbn10 = getCheckSum(isbn);
    String isbn10Str = isbn + Character.toString(isbn10);

//  char[] c = new char[isbn10Str.length()];    *leaving this here for future learning.
    String[] cStr = new String[isbn10Str.length()];
    String isbnStr = "";
    for (int i = 0; i < isbn10Str.length(); i++){
        cStr[i] = Character.toString(isbn10Str.charAt(i));
//      c[i] = isbn10Str.charAt(i);             *leaving this here for future learning.
        if (i == 0 || i == 3 || i == 8 ) {
            cStr[i] += '-';
         }

         isbnStr += cStr[i];
    }
    return isbnStr;
}

// 最后的结果总是这样 321654987/ 和 3-216-54987-/ 它应该是从 0 到 9 的数字,如果余数是 10,则应该是 X。

请帮忙。非常感谢。

我觉得问题出在这里

for (int i = 0; i < isbn.length(); i++) {
    int[] num = new int[isbn.length()]; 
    num[i] = Character.getNumericValue(i) * (i+1);
    sum = sum + num[i];
}

for循环返回结果与isbn's内容无关,结果只取决于isbn字符串长度!

所以你可以把下面的代码改成下面的

for (int i = 0; i < isbn.length(); i++) {
        int[] num = new int[isbn.length()]; 
        num[i] = Character.getNumericValue(isbn.charAt(i));
        sum = sum + num[i];
}

上面的代码returns结果取决于isbn's内容