Java中的数据成员(字段)存在问题并将其引出来?如何正确实施?

问题描述:

我想在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(); 


    } 
} 

你的任务是反向的值:

work = this.totalWork; 

应改为

this.totalWork = work; 

的方式,现在你正在计算work中的所有内容,并立即用this.totalWork的值覆盖它。

+0

是的,这就是我想要的! – 2009-12-11 20:45:44

我不确定你想要做什么。在你设置work = this.totalWork的行上,this.totalWork等于0.0,因此你得到了我期望的结果。你的意思是把这个总工作设置为工作的价值,而不是工作到总工作的价值?

+0

是的我想将这个总工作设置为工作的价值。 – 2009-12-11 20:43:28

+0

所以你需要改行 this.totalWork = work; 不是相反 – 2009-12-11 21:09:47

据我所知,totalWork从未初始化和/或修改。

默认初始值是0.0,因此这是您在打印输出看到

您应该尝试了解局部变量(工作)和成员变量(totalWork)及其范围之间的区别。

其他人可能会打败我纠正这个问题,但重要的是,如果你学习像Java这样的面向对象的语言,那么你需要很好地理解这些概念。