Это классическая ошибка «off by one» - вы столкнетесь с lot , когда найдете свои навыки программирования.Проблема в этом случае - индексация на основе 0.То есть первый символ строки имеет индекс 0, а последний - индекс « длина строки - 1 ».Если мы используем sent = "Test";
в качестве примера, то:
sent.charAt(0) == 'T'
sent.charAt(1) == 'e'
sent.charAt(2) == 's'
sent.charAt(3) == 't'
sent.charAt(4) == ??? // "That's an error, Jim!"
Обратите внимание, что индекс 4 - который, возможно, вводит в заблуждение * длина строки - выходит за пределы.Итак, что происходит во время первой итерации цикла, когда i == 0
:
check = sent.charAt(len - i); // ERROR! Because ...
==> = sent.charAt((4) - (0));
==> = sent.charAt( 4 ); // Doh!
Я оставляю это вам, чтобы выяснить, как вы можете это исправить.