Java 我正在检查pallindrome字符串。为什么总是打印yes

Java 我正在检查pallindrome字符串。为什么总是打印yes,java,string,Java,String,这将始终返回yes作为a1。reverse()返回与a1相同的原始StringBuffer对象。如果要比较字符串,必须从stringbuffer对象生成字符串: public static void main(String[] args) { Scanner sc=new Scanner(System.in); String A=sc.next(); StringBuffer a1 = new StringBuffer(); a1.append(A); System.ou

这将始终返回
yes
作为
a1。reverse()
返回与
a1
相同的原始
StringBuffer
对象。如果要比较字符串,必须从stringbuffer对象生成字符串:

public static void main(String[] args) {  
  Scanner sc=new Scanner(System.in);
  String A=sc.next();
  StringBuffer a1 = new StringBuffer();
  a1.append(A);
  System.out.println(a1.equals(a1.reverse())?"Yes":"No");
}

是的,首先将其转换为字符串,就可以比较它们。
否则,您将比较它们的地址(StringBuffer地址),两者的情况相同。

这是否回答了您的问题这是否回答了您的问题?
public static void main (String[] args) {
    Scanner sc=new Scanner(System.in);
    String A=sc.next();
    StringBuffer a1 = new StringBuffer();
    a1.append(A);
    System.out.println(a1.toString().equals(a1.reverse().toString())?"Yes":"No");
}