我正在做一个作业,其中我创建了一个 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/