2009-12-11 3 views
0

printReport()에서 calcWork()의 ​​결과를 인쇄하고 싶지만 0.0이 계속 유지됩니다. work = this.totalWork;를 설정하는 데 문제가 있습니까?Java의 데이터 멤버 (필드)에 문제가 발생하여 프 라이팅되는 문제가 있습니까? 제대로 구현하는 방법?

public class CarnotEngine { 
    public double n = 10; 
    public double R = 4; 
    public double Th = 8; 
    public double Tc =2; 
    public double Va = 4; 
    public double Vb = 3; 
    public double totalWork; 
    public double highTemp, lowTemp; 
    public double efficientcy; 


public CarnotEngine(double highTemp, double lowTemp){ 
    this.highTemp = highTemp; 
    this.lowTemp = lowTemp; 
} 



public double calcWork(){ 
    double Qh; 
    double work; 
    Qh = (n*R*highTemp)*log(Vb/Va); 
    work =(1-lowTemp/highTemp)*Qh; 
    work = this.totalWork; 
    return work; 


} 

    public void printReport() { 
    System.out.println("Simulation Result for Carnot Engine"); 
    System.out.println("work done" + totalWork); 

    public static void main(String[] args) { 
     CarnotEngine carengine = new CarnotEngine(500, 200); 
    carengine.calcWork(); 
    carengine.calcEfficientcy(); 
    carengine.printReport(); 


    } 
} 

답변

4

과제가 거꾸로 출력물에 표시되는 값이며, 0.0 지금은 work의 모든 것을 계산하고 즉시 this.totalWork의 값으로 덮어 쓰고 있습니다.

+0

예, 그것이 내가 원하는 것입니다! –

0

정확하게 무엇을 하려는지 확실하지 않습니다. work = this.totalWork로 설정 한 행에서 this.totalWork는 0.0과 같으므로 예상 한 결과를 얻고 있습니다. totalWork의 값으로 작업하기보다는 this.totalWork를 work의 값으로 설정한다는 것을 의미합니까?

+0

예 this.totalWork를 work 값으로 설정하려고합니다. –

+0

그래서 줄을 변경해야합니다 this.totalWork = work; 다른 점은 없습니다 –

0

내가 알 수있는 한, totalWork은 초기화되거나 수정되지 않습니다.

work = this.totalWork; 

대신

this.totalWork = work; 

방법이 있어야한다 :

기본 초기화 값은 따라서 이것이 당신이

1

로컬 변수 (작업)와 멤버 변수 (totalWork)와 해당 범위의 차이점을 이해해야합니다.

다른 사람들은 문제를 해결하는 데 나를 때릴 것이지만, 자바와 같은 객체 지향 언어를 배우면 이러한 개념을 잘 이해해야합니다.

관련 문제