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

좋아, 2 개의 BigDecimal 값을 넣고 싶다. 나는 두 배로 생성자를 사용하고있다. (나는 가능하다고 생각한다. 문서에 옵션이있다.) 내가 메인 클래스에서 사용하는 경우,이 얻을 :2 개의 BigDecimal 값을 더하는 것

z: 5 

답변

56

BigDecimal를 변경할 수 없습니다 :

x: 1 
y: 1 

내 Z 변수를 보여 System.out.print을 사용하면 내가이 얻을. 모든 작업이 작업의 결과를 포함하는 새로운 인스턴스를 반환 : 당신이 x는 변경하고자하는 경우

BigDecimal sum = x.add(y); 

, 당신은 이렇게 이해하는 데 도움이

x = x.add(y); 

정말 the javadoc 읽기해야 할 방법 클래스와 그 방법 작업.

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

BigDecimal의 모든 작업이 새로운 BigDecimal 반환하지만 현재 인스턴스를 변경하지 :

5

는 아마도 이것은 당신이 선호하는 것입니다.