0

こんにちは、単語が回文かどうかを確認するために 2 つの異なる方法を使用します。ハードコーディングされていない場合に機能しない理由がわかりません...これがテストに使用したコードです。(コメントされたバリアベルは機能します)

      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()内容を比較するために使用する必要があります。equalsStringBuilder インスタンスで使用すると比較されreferencesます。

于 2012-10-23T18:25:58.187 に答える