我已经使用StringBuilder类用java编写了回文代码,但它不起作用?

我已经使用StringBuilder类用java编写了回文代码,但它不起作用?,java,Java,我写了一个检查回文的代码,但是它将所有输入显示为回文 class Solution { public static void main(String[] args) { String a = "shubham", reverse=""; StringBuilder input = new StringBuilder(); input.append(a); System.out.println("Value of a:-"+a); System.out.println("V

我写了一个检查回文的代码,但是它将所有输入显示为回文

class Solution {
public static void main(String[] args) {
  String a = "shubham", reverse="";
  StringBuilder input = new StringBuilder();

  input.append(a);

  System.out.println("Value of a:-"+a);
  System.out.println("Value of b:-"+input.reverse().toString());

  if(a.equals(input.reverse().toString())) {
      System.out.println("Given input is palidrome");
  }
  else {
      System.out.println("Given input is not palidrome");
  }
}
上面的输出是:

a值:-shubham b值:-mahbuhs 给定的输入是回文

StringBuilder.reverse是一个有状态操作,这意味着input.reverse==input将为true。它只是返回这个

因此,当您反转打印它,然后稍后再次反转以进行比较时,它将处于初始位置。这意味着它将等于a

当您删除打印语句时,它将起作用。或者,如果要打印它,只需删除if语句中的反向调用:

if (a.equals(input.toString()) {
反向操作应用于对象本身,但不会返回修改后的副本

System.out.println("Value of b:-"+input); // shubham
input.reverse();
System.out.println("Value of b:-"+input); // mahbuhs
input.reverse();
System.out.println("Value of b:-"+input); // shubham


怎么不工作?你能举一个例子,说明它没有给出预期的输出吗?是的,它没有给出预期的输出。你把它颠倒了两次。我得到了它。
String a = "shubham", reverse="";
StringBuilder input = new StringBuilder();
input.append(a);

System.out.println("Value of a:-" + a);
System.out.println("Value of b:-" + input); 
input.reverse();

if(a.equals(input.toString())) {
    System.out.println("Given input is palidrome");
}else {
    System.out.println("Given input is not palidrome");
}