java - .equals() 方法是否适用于 StringBuilder?

标签 java stringbuilder

我正在尝试编写一个程序来测试用户输入的字符串是否为回文。

这是我的代码:

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,因此您应该改用 Stringequals

if(sb.toString().equals(sb.reverse().toString()))

P.S 即使它确实覆盖了 equals,您的测试也总是返回 true,因为您正在将 StringBuilder 实例与其自身进行比较(reverse不返回新的 StringBuilder 实例)。

关于java - .equals() 方法是否适用于 StringBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33645448/

相关文章:

c# - 如何将 ulong 数据类型输入转换为字符串以进行口头数字输出?

java - 具有数百万条记录的循环 - java.lang.OutOfMemoryError : Java heap space

java - 如何修复索引越界错误?

javascript - 如何在selenium中打印页面并关闭打印窗口

java - 分布式环境下的defaultCache和cache问题(数据不一致)

java - 重构一个长 servlet 条件

java - 从 JAR 中读取文件不适用于 Windows

c# - StringBuilder 的默认容量

java - 寻找 StringBuilder 的高性能替代品

java - 如何在JAVA中合并2个while循环以避免重复