java - 调用方法时如何传递正确的值?

标签 java methods

我正在做一个作业,其中我创建了一个 Appliance 类,其中有一个 timePasses() 方法。此方法重定向一些需要存储在另一个类内的另一个方法中的值。这是我在这方面的工作:

家电

public class ElectricCooker extends Cooker {

    public int isOn = -1;
    public int isOff = 0;
    public int incrementTime;
    public int varPass = -1;

    @Override
    public int currentState() {
        if (varPass == 0) {
            return isOff;
        } else {
            return isOn;
        }
    }

    @Override
    public void useTime(int defaultTime) {
        defaultTime = 15;
        incrementTime = 4;
    }

    @Override
    public void timePasses() {
        if (varPass == isOff) {
            varPass = 0;
        } else {
            ElectricMeter.getInstance().incrementConsumed(electricityUse);
            GasMeter.getInstance().incrementConsumed(gasUse);
            WaterMeter.getInstance().incrementConsumed(waterUse);
        }
    }

    ElectricCooker(int electricityUse, int gasUse, int waterUse, int timeOn) {
        super(electricityUse, gasUse, waterUse, timeOn);

        this.electricityUse = 5 * incrementTime;
        this.gasUse = 0 * incrementTime;
        this.waterUse = 0 * incrementTime;
        this.timeOn = 15 * incrementTime;
    }
}

仪表

public class ElectricMeter {

    ElectricMeter() {
    }
    private static ElectricMeter instance = new ElectricMeter();

    public static ElectricMeter getInstance() {
        return instance;
    }

    public void incrementConsumed(int value) {
        System.out.println(value);
    }

    public int incrementGenerated() {
    }

    public boolean canGenerate() {
    }

    public String getConsumed() {
    }

    public String getGenerated() {
    }
}

主要方法

public class MainCoursework {

    public static void main(String[] args) {
        ElectricMeter a = new ElectricMeter();
        a.incrementConsumed(//what goes here?);     
    }
}

所以 timePasses() 的值已被重定向到 ElectricMeter 实例,但现在我需要将该值返回给 increentConsumed() meter 类中的方法,我一直在研究如何执行此操作。由于 electricityConsumed 的值为 20,因此输出应为 20。但是我必须将一个参数传递给 a.incrementConsumed(//在此处传递参数) 并且传递的内容会打印到屏幕上,而不是 20 来自 电力使用。感谢您提供有关如何执行此操作的任何帮助,谢谢。

最佳答案

实际上,incrementConsumed 方法确实如您描述的那样实现了:

public void incrementConsumed(int value)  
{
    System.out.println(value);     
}

一个名为incrementXXX 的方法实际上不应该输出任何东西,不是吗?它应该增加一个变量/字段:

private int electricityUsed = 0;
public void incrementConsumed(int value)  
{
    electricityUsed += value;    
}

您应该声明另一个返回 electricityUsed 的方法:

public int getElectricityUsed() {
    return electricityUsed;
}

现在让我们修复您的 main 方法。

在您的 main 方法中,您甚至没有创建任何耗电的东西!电表如何incrementConsumed?所以从 main 方法中删除所有内容并创建一个 cooker:

// your constructor looks weird. So I passed in some random arguments..
ElectricCooker cooker = new ElectricCooker(20, 0, 0, 60);

现在调用 timePasses 来模拟一段时间过去了:

cooker.timePasses();

并打印使用的电量:

System.out.println(ElectricMeter.getInstance().getElectricityUsed());

关于java - 调用方法时如何传递正确的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40904551/

相关文章:

Java程序只返回输入,在方法中不显示计算结果

java - 在方法中添加一个int并在main中显示

php - 何时使用 $this->$property

c# - 无法在 varchar 错误上调用方法

java - 设置用户凭据时 Youtube Java API 出错

java - Java 中的线程,使用 main() 的堆栈可以在使用 run() 的堆栈之前死亡/结束吗?

java - 在 Java 中序列化 Longs 数组的最紧凑方法

java - 返回值不正确的递归方法

java - 如何获取android sqlite数据库中的所有表名?

java - android.support.v4.app.FragmentPagerAdapter 不能应用于 android.app.FragmentManager