Java 调用方法时如何传递正确的值?
我正在做一个赋值,在这个赋值中我创建了一个Appliance类,其中包含一个Java 调用方法时如何传递正确的值?,java,methods,Java,Methods,我正在做一个赋值,在这个赋值中我创建了一个Appliance类,其中包含一个timepasss()方法。此方法重新定向需要存储在另一个类中的另一个方法中的某些值。以下是我在这方面的工作: 设备 public class ElectricCooker extends Cooker { public int isOn = -1; public int isOff = 0; public int incrementTime; public int varPass =
timepasss()
方法。此方法重新定向需要存储在另一个类中的另一个方法中的某些值。以下是我在这方面的工作:
设备
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
实例中,但现在我需要将该值返回到meter类中的incrementconsumered()
方法中,我一直在研究如何执行此操作。由于electricityConsumed
的值为20,因此输出应为20
。但是,我必须将一个参数传递到a.incrementConsumed(//pass parameter here)中,然后将传递的内容打印到屏幕上,而不是electrictyUse中的20
。非常感谢您提供的帮助。您需要在电能表中创建一个实例变量,并在incrementConsumed
上更新该值。当您想要打印时,请使用此变量的访问器
public class Electric {
public static void main(String[] args) {
ElectricCooker cooker = new ElectricCooker(1,2,3,4);
//opertion on cooker
//ignoring best way for singleton creation
int electricityUse = ElectricMeter.getInstance().getElectricityUse();
System.out.println(electricityUse);
}
}
class ElectricCooker // extends Cooker
{
public int isOn = -1;
public int isOff = 0;
public int incrementTime;
public int varPass = -1;
public int electricityUse = -1;
public int currentState() {
if (varPass == 0)
return isOff;
else {
return isOn;
}
}
public void useTime(int defaultTime) {
defaultTime = 15;
incrementTime = 4;
}
public void timePasses() {
if (varPass == isOff)
varPass = 0;
else {
ElectricMeter.getInstance().incrementConsumed(electricityUse);
}
}
ElectricCooker(int electricityUse, int gasUse, int waterUse, int timeOn) {
this.electricityUse = 5 * incrementTime;
}
}
class ElectricMeter {
public int electricityUse = -1;
private static ElectricMeter instance = new ElectricMeter();
public static ElectricMeter getInstance() {
return instance;
}
public void incrementConsumed(int value) {
this.electricityUse = value;
}
public int getElectricityUse() {
return electricityUse;
}
}
实际上,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
方法
在你的主要方法中,你甚至没有创造任何耗电的东西!电表如何增加消耗量?因此,从主方法中删除所有内容,并创建一个炊具:
// 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());
在电表中
,有些操作不执行它们应该执行的操作
ElectricMeter.getInstance().incrementConsumed(electricityUse);
应该增加某些内容,但它只在输出中写入:
public void incrementConsumed(int value){
System.out.println(value);
}
你应该写它,而不是:
public void incrementConsumed(int value){
consumed+=value;
}
并在电表
类中添加一个private int consumered
字段来存储实际消耗的电量
以及具有空实现的getConsumed()
:
public String getConsumed(){
}
只需返回consumered
字段,就可以返回int
值,而不是字符串
public int getConsumed() {
return consumed;
}
通过这种方式,您可以执行以下操作:
public static void main(String[] args){
ElectricMeter.getInstance().incrementConsumed(20);
int consumed = ElectricMeter.getInstance().getConsumed();
}