Ваш алгоритм некорректен, ваш вложенный цикл должен запрашивать ввод, а не проверять, является ли ввод палиндромом (для которого требуется один цикл).Кроме того, x
и y
, по-видимому, используются как int
(s) - но вы объявили их как String
(и на самом деле они вам не нужны).Во-первых, проверка палиндрома должна сравнивать смещение символов от индекса в начале и конце ввода до половины пути (поскольку смещения затем пересекаются).Далее, бесконечный цикл легко читается и легко прерывается при пустом вводе.Что-то вроде
Scanner input = new Scanner(System.in);
while (true) {
System.out.print("Enter a string: ");
System.out.flush();
String line = input.nextLine();
if (line.isEmpty()) {
break;
}
boolean isPalindrome = true;
for (int i = 0; i * 2 < line.length(); i++) {
if (line.charAt(i) != line.charAt(line.length() - i - 1)) {
isPalindrome = false;
break;
}
}
if (isPalindrome) {
System.out.printf("%s is a palindrome.%n", line);
} else {
System.out.printf("%s is NOT a palindrome.%n", line);
}
}
System.out.println("Empty line read - Goodbye!");