Я нашел вашу ошибку, вы допустили ошибку.
int index = 0;
while (index < 13) {
char num = (char) (isbnNumber.charAt(index) - '0');
if (index % 2 == 0) {
isbnTotal = isbnTotal + num;
} else {
isbnTotal = isbnTotal + (3 * num);
}
index++;
}
Проблема №1
Код
char num = isbnNumber.charAt(index);
Не было у вас пока l oop, в результате чего ваш код всегда запускается с одним и тем же символом.
Проблема № 2
При выполнении
char num = isbnNumber.charAt(index);
Фактически вы получаете значение ASCII символа. Что вы не можете получить, так это значение числа, верно? Итак, вам нужно сделать:
char num = (char) (isbnNumber.charAt(index) - '0');
Обратите внимание, что ноль находится между двумя одинарными кавычками, потому что нам нужно значение ZERO ASCII CHARACTER (которое равно 38).
'1 '-' 0 '= 1
' 9 '-' 0 '= 9
РЕДАКТИРОВАТЬ: я забыл упомянуть, что вы должны проверить перед тем, является ли символ числом, иначе вы, возможно, попробуйте сделать что-то вроде 'A' - '0', что будет равно 17