【问题标题】:Does the .equals() method work with StringBuilders?.equals() 方法是否适用于 StringBuilders?
【发布时间】:2025-11-29 07:45:01
【问题描述】:

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

这是我的代码:

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 之间是否存在某种不兼容?如果是这样,是否有任何解决方法?

【问题讨论】:

标签: java stringbuilder


【解决方案1】:

StringBuilder 不会覆盖equals,因此您应该改用Stringequals

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

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

【讨论】:

  • 实际上,StringBuilder 就地运行。返回的StringBuilder是同一个对象。
  • 谢谢,将其转换为字符串解决了问题,我会保留 P.S.记住。
最近更新 更多