Нужно определить, является ли введенный текст палиндромом.
Палиндро́м — буквосочетание, слово или текст, одинаково читающееся в обоих направлениях.
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
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Собрал проект мавеном в JAR файлВнутри архива есть папка с картинками, однако не могу понять, как прописать путь к этим файлам так, чтобы можно...
Привет, хочу решить систему ОДУ методом Рунге-Кутты 4 порядкаПравильно ли реализован этот метод?