Я учусь шаг Java за шагом:Почему логическое значение не меняется?
У меня есть проблема практики problem statement link, и это мой код:
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
int test, numProcess = 0;
boolean checkString ;
String alpha = "abcdefghijklmnopqrstuvwxyz";
Scanner sc = new Scanner(System.in);
test = sc.nextInt();
for (int i = 0; i < test; i++) {
String original = sc.nextLine();
checkString = checkPalindrome(original);
while (!checkString) {
char oldchar = original.charAt((original.length() - 1));
char newchar = alpha.charAt((original.indexOf(oldchar) - 2));
original = original.substring(0, original.length()-1)+ newchar;
checkString = checkPalindrome(original);
numProcess++;
}
System.out.println(numProcess);
}
sc.close();
}
public static boolean checkPalindrome(String original) {
String newString = "";
for (int i = (original.length() - 1); i >= 0; i--) {
newString += original.charAt(i);
}
return (newString.equals(original));
}
}
проблема, когда мы пытаемся в качестве входных данных,
"abc"
, как string (IN WHILE LOOP) 1-я итерация делает оригинал = abb , затем переходит к функции, которая возвращает false (это правильно)- в 2-й итерации al = aba, который должен возвращать checkString = true;
- и в следующий раз, когда цикл должен быть обойден, но он снова входит в во время цикла (я пробовал это в отладчике) и делает исключение исключений в строке , содержащей newchar (Index out of bounds), в чем проблема?
Пожалуйста, не могли бы вы работать на форматирование вашего вопроса, чтобы сделать его доступным для чтения. – NPE