Нужно определить, является ли введенный текст палиндромом.
Палиндро́м — буквосочетание, слово или текст, одинаково читающееся в обоих направлениях.
String inputString = (new Scanner(System.in)).next();
StringBuffer reverseString = new StringBuffer(inputString);
reverseString.reverse();
System.out.println(inputString.equals(reverseString));
Как сравнить объекты String и StringBuffer?
Как сравнить объекты String и StringBuffer?
Для сравнения объектов классов String и StringBuffer их необходимо привести к одному виду.
В классе StringBuffer есть метод toString(), который отдает содержимое StringBuffer в виде объекта класса String. Далее можно сравнить две строки, используя метод equals(...):
System.out.println(inputString.equals(reverseString.toString()));
Почему мой вариант кода не заработал?
Давайте посмотрим реализацию метода String.equals(...):
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
Сначала производится сравнение ссылок, они у Вас, очевидно, разные.
Далее происходит проверка: является ли переданный объект объектом класса String. Так как Вы передаете StringBuffer, то anObject instanceof String возвращает false и сам метод equals(...) в итоге возвращает false.
PS. Есть еще класс StringBuilder, который идентичен классу StringBuffer за исключением того, что первый не синхронизирован (соответственно работает быстрее). Так что если Вы работаете в однопоточной среде, то целесообразно использовать StringBuilder вместо StringBuffer.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости