0

您好,我使用 2 种不同的方法来检查一个单词是否是回文。一种是硬编码的(这可以按预期工作),另一种是我使用 Stringbuilder 的,但我总是得到 true 并且永远不会 false 作为输出。我不明白为什么它在没有硬编码时不起作用......这是我用于测试的代码。(注释变量有效)

      public static void main(String[] args) {

      StringBuilder a = new StringBuilder("did");

      StringBuilder b = a.reverse();


     // String a = "did";
     // String b = "dad";

      if(b.equals(a)) {
          System.out.println("true");
      }
      else {
          System.out.println("false");
      }

      System.out.println(b);
      }
4

1 回答 1

9

因为,StringBuilder#reverse做到位倒车。所以,a.reverse()也改变了 的值a

您可以创建您的StringBuilder相当的副本。

    StringBuilder a = new StringBuilder("did");
    StringBuilder b = new StringBuilder(a);

    if (b.toString().equals(a.reverse().toString())) {
        System.out.println("true");
    } else {
        System.out.println("false");
    }

您需要使用toString()来比较内容。equals在 StringBuilder 实例上使用将比较references.

于 2012-10-23T18:25:58.187 回答