2012-01-13 18 views
24
class Point { 

    BigDecimal x; 
    BigDecimal y; 

    Point(double px, double py) { 

    x = new BigDecimal(px); 
    y = new BigDecimal(py); 
    } 

    void addFiveToCoordinate(String what) { 

    if (what.equals("x")) { 
     BigDecimal z = new BigDecimal(5); 
     x.add(z); 
    } 
    } 

    void show() { 

    System.out.print("\nx: " + getX() + "\ny: " + getY()); 
    } 

    public BigDecimal getX() { 

    return x; 
    } 

    public BigDecimal getY() { 

    return y; 
    } 

    public static void main(String[] args) { 

    Point p = new Point(1.0, 1.0); 
    p.addFiveToCoordinate("x"); 
    p.show(); 
    } 
} 

[OK]を2つのBigDecimal値を追加します。私はダブルスでコンストラクタを使用しています(私はそれが可能だと思います - ドキュメントにオプションがあります)。私はメインクラスでそれを使用している場合は、私はこれを取得:私は私のZ変数を表示するためにSystem.out.printを使用する場合2つのBigDecimal値を加算する

x: 1 
y: 1 

私はこれを取得:

z: 5 

答えて

56

のBigDecimalは不変です。すべての操作は、操作の結果を含む新しいインスタンスを返します。

BigDecimal sum = x.add(y); 

あなたは、xが変更したい場合、あなたはこのように本当にthe javadocを読む

x = x.add(y); 

を行う必要がありますどのようにクラスとそのメソッドを理解するのに役立ちます作業。

5

おそらくこれはあなたが好むものです:

BigDecimal z = new BigDecimal(5).add(x); 

BigDecimalのすべての操作は新しいBigDecimalを返しますが、現在のインスタンスを変更しません。

関連する問題