2012-10-09 3 views
-1

복사하지 나는 주식이 모델 클래스를 코딩 이 :자바 복사 생성자는 값

Stock bac = new Stock("BAC", 100, 42.22f); 
    System.out.println(bac); 

    bac.setLatestPrice(43.35f); 
    System.out.println(bac); 

    Stock bacCopy = new Stock(bac); 
    System.out.println(bacCopy); 

출력은 다음과 같습니다

,536,913 63010
BAC 100 42.22 42.22 0.00% 
    BAC 100 42.22 43.35 2.68% 
    BAC 100 42.22 42.22 0.00% 

어떤 이유로 든 퍼센트 - 이득을 나타내는 마지막 값이 복사되지 않습니다?

여기 %의 이득 방법은 BTW입니다 : 어디에서 잘못 가고

public void updatePercentGain() 
{ 
    percentGain = ((latestPrice - purchasePrice)/purchasePrice) * 100; 
} 

?

+4

이것은 잘못되었습니다.'ticker == ""'대신 ticker.equals ("")'를 사용하고 싶습니다. –

+0

문자열에 "=="을 사용할 수 있습니다. 그것은 작동합니다 – Haque1

+1

'43 .35 '의이 값은 어떻게 여기에 있습니까? BAC 80 42.22 43.35 2.68 % –

답변

3

Stock 생성자를 실행하면 이 생성자에 전달 된 purchasePrice으로 초기화됩니다. 이 값들이 동일하기 때문에 백분율 게인은 0.00 %가됩니다. 당신이 이상 복사되지 않은 실제 생성자 (아닌 복사 생성자)에서

public Stock(Stock other) throws IllegalArgumentException 
{ 
    this(other.ticker, other.shares, other.purchasePrice); 
    this.latestPrice = other.latestPrice; 
    updatePercentGain(); 
} 
+0

감사합니다. Greg! 그 트릭을 했어. – Haque1

2

: 당신은 또한 당신의 복사 생성자의 현재 latestPrice을 복사 할 경우

, 당신도 그렇게 할 것이다

latestPrice = purchasePrice; 

그래서 당신의 복사 생성자는 "43.35"을 "42.22"통해 전달되지 않고, 당신의 사본은 latestPrice를하지 않는 다음 latestPrice, 당신은 그냥 현재 가격에 동일 설정하고 있습니다.