2012-01-13 25 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(); 
    } 
} 

Tamam, 2 BigDecimal değer eklemek istiyorum. Ben ikilisi ile kurucu kullanıyorum (çünkü mümkün olduğunu düşünüyorum - belgelerinde bir seçenek var). Ben ana sınıfında kullanırsanız, bu alın:2 BigDecimal değerlerini ekleme

z: 5 

cevap

56

BigDecimal değişmez:

x: 1 
y: 1 

benim z değişkeni göstermek için System.out.print kullandığınızda i bu olsun. Her işlem işlemin sonucunu içeren yeni bir örneğini döndürür: x değiştirmek istiyorsanız

BigDecimal sum = x.add(y); 

, böylece anlama yardımcı olur

x = x.add(y); 

gerçekten the javadoc Okuma yapmak zorunda nasıl bir sınıf ve yöntemleri iş.

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

BigDecimal her operasyon, yeni bir BigDecimal döndürür ancak geçerli örneğini değiştirmez:

5

Belki de bu tercih budur.