1

私は割り当てに取り組んでおり、別のクラスが拡張する親クラスを作成する必要があり、親クラスの toString() メソッドをオーバーライドし、親の toString メソッドを使用して新しいクラスを表示する必要がありますが、行を追加する必要があります.

すべて問題ありませんが、行き詰まっているところは、元の toString() には double をお金にフォーマットする数値フォーマット オブジェクトがあり、新しい行でフォーマットされた double が必要です。指示では、新しい toString メソッドで数値フォーマッタを必要とせず、古い toString() メソッドで「ほとんどの作業」を処理できるようにする必要があると書かれていますが、この double をフォーマットする方法がわかりません。

ここにいくつかのコードがありますので、私が何を意味するかを見ることができます:

    import java.text.NumberFormat;

    public abstract class First {

    public First(int x, double y)

    protected int num = x;
    protected double num2 = y;
    }

    public String toString()
    {   
        NumberFormat x = NumberFormat.getCurrencyInstance();

        return "Int num: " + num + 
             "\n     num2: " + x.format(num2);

    }
    }

次に、子クラスがあります。

public class Second extends First {

protected double num3;

public Second(int x, double y, double z) 
{
 super(x, y);
 num3 = z

}

public String toString()
{
    return super.toString() + "\n num3 " + num3; 
}

}

これを行うと(無関係なコードをたくさん省略しました)動作しますが、num2が親クラスにあるように、num3をお金のようにフォーマットする必要がありますが、子クラスにフォーマッタオブジェクトを持つことはできません。

誰かが私を正しい方向に押し進めることができれば、とても感謝しています。

4

2 に答える 2

0

チェックしないと、 NumberFormat.getCurrencyInstance() はおそらくシングルトンを返すため、親のように呼び出すと、別のオブジェクトにはなりませんが、親が使用するのと同じオブジェクトになります...おそらく楽しい質問です:)。

于 2013-09-10T06:45:11.150 に答える