Сравнение строк не работает должным образом?

Поэтому я пытаюсь, чтобы пользователь вводил строку, печатал ее назад, а затем сравнивал новые строки, чтобы увидеть, является ли это палиндром или нет. Кажется, он работает, и я не уверен, почему...

public static void main(String[] args) {
 Scanner input = new Scanner (System.in);
 System.out.print("Enter a word: ");
 String word = input.next();
 StringBuilder drow = new StringBuilder(word);
 drow.reverse();
 System.out.println(drow);
 System.out.print(" ");
 String X = drow.toString();
 if (word == X) {
 System.out.println("That word is a palindrome"); 
} else {
 System.out.println("That word is not a palindrome");
}

Спасибо за любую помощь, почему это не работает...

3 ответа

word == X спрашивает, являются ли они буквально одной и той же строкой (т.е. это две ссылки, указывающие на один и тот же объект в памяти), а не если они одинаково равны (т.е. две разные строки, которые содержат одни и те же буквы), вы хотите

string.equals(otherString)

Аналогия, которую я использую с этим, - это близнецы. Есть два идентичных близнеца. == спрашивает, являются ли они одним и тем же человеком. .equals() спрашивает, выглядят ли они одинаково


Ваши сравнительные ссылки (используя ==). Используйте метод equalsTo для сравнения содержимого строки.


Не используйте ==. .equals() этого используйте .equals():

if (word.equals(X)) {
 System.out.println("That word is a palindrome"); 
}

licensed under cc by-sa 3.0 with attribution.