2016-09-08 3 views
-1

私は以下のような方法でユーザがログインのリストを準備しています:のJavaのStringBuilder ##問題

final StringBuilder _sb = new StringBuilder(); 
final String[] _ae = _d.getErrorsDetails(); 

for (int i=0; i<_ae.length; ++i) { 
    _sb.append(_ae[i]);      
    _sb.append(i == _ae.length-1 ? "" : s+s); 
} 

s変数は#文字です。私がsの変数を1つ1つ追加した後、のtoString()メソッドを呼び出すと、に対して#70が得られます。理由を教えてくれませんか?

+0

は、デバッガを使用して、あなたは私が試したが、私は_sbを呼び出すまで、すべてが正しいようだ – Jens

+0

それを見つけるだろうように見えます.toString()... – Blady214

+0

forループの後に '_sb.append(s + s);'(またはバグを修正するもの)を置くだけで簡単になるかもしれません。 'i == _ae.length-1'をチェックする必要はありません。 –

答えて

3

scharなくStringある場合、s + sではなく、文字列の連結の(すなわち、文字コードポイント値を加算)整数加算を実行します。

+0

ありがとうございます、今私は下回ります。 – Blady214

+0

いいえ、まだ分かりません。以前私はコードを少し変更して、新しい文字列変数を作成しましたが、最後に##を付けました。それから私はこの文字列を_sbに追加しました。その結果、私は##に対して#70も得ます。 – Blady214

+0

それを示す[mcve]を投稿してください。それ以外の場合は、あなたが間違っていた場所を推測することしかできません。 –

0

35#35 + 35の整数である70で、AE [i]は#

+0

いいえae [i]は#とは異なる文字列のテキスト値です。 – Blady214