0

これは私のプログラムの1つにあるコードのブロックです。直接割り当てるsb1= str2とエラーが発生します。だから私は2つのStringBufferオブジェクトを作成しています。

1つのStringBufferオブジェクトのみを使用して以下の要件を達成する可能性はありますか?

   String str1, str2;
    Scanner scanObj = new Scanner(System.in);
    str1 = scanObj.next();
    StringBuffer sb1 = new StringBuffer(str1);
    sb1.reverse();
    str1 = sb1.toString();
    char[] input1 = str1.toCharArray();
    str2 = scanObj.next();
    StringBuffer sb2 = new StringBuffer(str2);
    sb2.reverse();
    str2 = sb2.toString();
    char[] input2 = str2.toCharArray();
4

3 に答える 3

1

sb.setLength(0) を使用してから、新しい文字列を再度追加します。これにより、同じメモリ割り当てが維持されます。

于 2012-06-14T11:53:39.937 に答える
0

あなたは書ける

Scanner scanObj = new Scanner(System.in);
char[] input1 = new StringBuilder(scanObj.next()).reverse().toString().toCharArray();
char[] input2 = new StringBuilder(scanObj.next()).reverse().toString().toCharArray();

setLength(0) と append() を使用して StringBuilder を再利用できますが、より複雑になります。

于 2012-06-14T11:52:50.360 に答える
0

オブジェクトが異なるため、StringBuffer直接割り当てることはできません。Stringこれはあなたを助けるはずです:

String yourStr = "some value";
StringBuffer buffer = new String(yourStr);
StringBuffer other = buffer;

オブジェクト コンストラクターには任意のString値を入れることができます。StringBuffer

于 2012-06-14T11:53:13.173 に答える