我正在尝试编写一个程序来测试用户输入的字符串是否为回文。
这是我的代码:
import java.util.Scanner;
public class palindrome{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
System.out.println("Enter text");
String inputstr = input.nextLine();
sb.append(inputstr);
if((sb).equals(sb.reverse())){
System.out.println("Palindrome");
}
else{
System.out.println("Not a palindrome");
}
}
}
没有编译时错误,但是无论我输入什么,输出都是回文。 .equals() 和 StringBuilder 之间是否存在某种不兼容?如果是这样,是否有任何解决方法?
最佳答案
StringBuilder
不会覆盖 equals
,因此您应该改用 String
的 equals
。
if(sb.toString().equals(sb.reverse().toString()))
P.S 即使它确实覆盖了 equals
,您的测试也总是返回 true,因为您正在将 StringBuilder
实例与其自身进行比较(reverse
不返回新的 StringBuilder
实例)。
关于java - .equals() 方法是否适用于 StringBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33645448/