I am trying to learn using StringBuilder class with a palindrome example and written this:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
StringBuilder word = new StringBuilder(scanner.nextLine());
System.out.println(word);
StringBuilder reverseWord = word.reverse();
System.out.println(reverseWord);
if(word.toString().equals(reverseWord.toString())) {
System.out.println("yes");
}else {
System.out.println("no");
}
}
Program constantly gives me the result "yes" but I fail to understand why? Obviously there is something wrong on my if block but cannot see what it is.
When you're calling word.reverse()
it's not returning a new instance of reversed StringBuilder
. Instead it's reversing elements inside StringBuilder
so both word
and reverseWord
StringBuilder
objects have characters in reversed order. You don't need to use two StringBuilder
objects. You just need one to find out the reverse and then you can compare it with orignal like this:
String input = scanner.nextLine();
StringBuilder reverseWordBuilder = new StringBuilder(input);
String reversedWord = reverseWordBuilder.reverse().toString();
if(input.equals(reversedWord)) {
System.out.println("yes");
} else {
System.out.println("no");
}