0

これは私が尋ねた以前の質問に関連しています。クラスに toString() メソッドを追加しています。このクラスは、整数のスタックを使用して任意の長さの自然数を作成します。私はインクリメントとデクリメントしかしていないので、スタックは良い方法のように思えました。とにかく、次のコードから出力が得られません。

public String toString() {
    String out_final = "", backwards = "", temp_str = "";
    Integer temp_int = 0;
    Character temp_char = ' ';

    while(!number.empty()) {
        temp_int = number.pop();
        temp_str = temp_int.toString();
        backwards.concat(temp_str);
    }

    while(backwards.length() > 0) {
        temp_char = backwards.charAt(backwards.length() - 1);
        temp_str = temp_char.toString();
        out_final.concat(temp_str);
    }
    return out_final;
}

それはによって呼び出されSystem.out.println(b4.toString()); ます オブジェクトnumberは私Stack<Integer> のスタックの最後から取得する必要があります (明らかに逆に) を参照してから、正しく印刷するためにもう一度逆にします。とにかく、これは急ぐ必要はありませんが、いつでも助けていただければ幸いです。

4

1 に答える 1

7

文字列は不変です:


backwards.concat(temp_str);

する必要があります


backwards = backwards.concat(temp_str);

out_final 連結についても同様です。

あるいは、スタックがかなり大きい場合は、StringBuilderが便利で、より効率的である可能性があります。

于 2011-01-14T04:12:24.603 に答える