我正在尝试创建一个返回 char 类型的方法。条件是这样的:系统从用户输入中获取 9 位数字并计算它。该方法转换 nextLine() 输入中的每个字符并计算总和,然后取 % 11。如果余数为 10,则方法返回“X”,如果余数为 0 到 9,则该方法返回该数字,但必须在字符类型。到目前为止,我迷失了为什么它总是输出'/'而没有别的。请帮我找出我的算法的错误。
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。
请帮忙。谢谢一堆。