Я нахожусь в классе Intro to Java, и у меня возникли проблемы с написанием алгоритма контрольной суммы для программы проверки кредитной карты. Требования:Проверка валидации на номер кредитной карты
- Начиная со второй цифры справа и справа налево, удваивайте каждую цифру; если итоговое число больше или равно 10, вычтите 9. Добавьте каждое результирующее число вместе.
- Затем, начиная с последней цифры справа и действуя справа налево, добавьте каждую цифру в общее число, используемое на предыдущем шаге.
- Если итоговое итоговое значение равномерно делится на 10, номер кредитной карты действителен.
- При кодировании этого алгоритма имейте в виду, что не все номера кредитных карт имеют одинаковое количество цифр.
Также указано, что для его завершения необходимо использовать петлю (петли). Я понимаю, что мне, вероятно, понадобится цикл for, но я просто зациклился на том, как закончить его. Это то, что у меня есть:
public static boolean isValidNumber(String cardNumber) {
//your code here
int i, checkSum = 0;
// Compute checksum of every other digit starting from right-most digit
for (i = cardNumber.Length - 1; i >= 0; i -= 2) {
checkSum += (cardNumber[i] - '0');
}
// Now take digits not included in first checksum, multiple by two,
// and compute checksum of resulting digits
for (i = cardNumber.Length - 2; i >= 0; i -= 2) {
int val = ((cardNumber[i] - '0') * 2);
while (val > 0) {
checkSum += (val % 10);
val /= 10;
}
}
// Number is valid if sum of both checksums MOD 10 equals 0
return ((checkSum % 10) == 0);
}
Я получаю ошибки на обоих циклах. Любая помощь?
Your для петель с помощью ту же переменную ('i'), изменить вложенный цикл for, чтобы использовать что-то вроде for (int j = cardNumber.Length - 2; j> = 0; j - = 2) – Andrew
@Andrew спасибо! Однако я все еще получаю ошибки, которые говорят «требуется массив, но String found», где у меня есть [i] и [j] .. знаете ли вы, как я мог это исправить? – badluckbowers