2016-05-08 10 views
1

私はREVERSが等しい "TOR" であるべきと思ったが、私はどのように作業stringBuilder.reverse?

String straight = stringBuilders[i].toString(); 
String reverse = stringBuilders[i].reverse().toString(); 
System.out.println("stringBuilders[i].reverse().toString() = " + stringBuilders[i].reverse().toString() 
+ " reverse = " + reverse + " straight = " + straight + 
" rev == str ? " + reverse.equals(straight)); 

をしようとしたとき、私はこのような結果に

stringBuilders[i].reverse().toString() = rot, reverse = tor, straight = tor, rev == str? false 

なぜですか?

rev == str ?は、

stringBuilders[i].reverse().toString() = rot, reverse = tor, 
+1

これはあなたが得た出力ですか? StringBuilderの元の値に応じて、rot、tor、rotまたはtor、rot、torを取得する必要があります。 – Eran

+0

マジックが解決されました。 "rot"はファイル内の最初の単語なので、utf-16 BOMを持っています。それは問題だった –

答えて

1

最初の問題はstraightがインデックスjを使用し、残りのコードがインデックスiを使用していることがあります。ここで

はMCVE(Minimal, Complete, and Verifiable example)としてあなたのコードです:

StringBuilder stringBuilder = new StringBuilder("tor"); 
String straight = stringBuilder.toString(); 
String reverse = stringBuilder.reverse().toString(); 
System.out.println("stringBuilders[i].reverse().toString() = " + stringBuilder.reverse().toString() + 
        " reverse = " + reverse + 
        " straight = " + straight + 
        " rev == str? " + reverse.equals(straight)); 

出力がある:あなたが示した出力されません

stringBuilders[i].reverse().toString() = tor reverse = rot straight = tor rev == str? false 

。とにかく

、あなたの主な問題はreverse()ことです:

は、この文字列は、は、配列の逆でを交換することにします。

ので、reverse()にあなたの最初の呼び出しはstringBuilderreverse変数に割り当てられた値である値rotを、持っています。

printステートメントのreverse()を2度目に呼び出すと、値torに戻ります。この値は印刷されます。

+0

ありがとう!私はそれを得た –

+0

+は "腐敗"のために等しくなかったファイルの最初の単語ですので、それはutf - 16 BOMを持っています。 –

0

stringBuilders [I] .reverse()のtoString()=腐敗は、TOR =逆転ことができる方法false として出力を与える

StringBuilderは変更可能ですので、reverse()を呼び出すたびに、文字を端から端までフリップします。

+0

ありがとう!今私はそれを得た –

関連する問題