私は、家庭内の家電製品で使用されているエネルギー消費量を登録することに基づいたプログラムを作成しています。これまでは、WaterMeter、GasMeterなどのさまざまなメータークラスを作成しました。空のメソッドには値を設定する必要があります。また、各アプライアンス内のエネルギー消費を登録するメソッドを持つアプライアンスのクラスも作成しました。私が現在取り組んでいるのは、コンストラクタ内に保存されているエネルギー値を適用し、その値をtimePasses()
メソッドに入れて、その値を特定のメーターのメソッドに戻して登録できるようにすることです。これは私がこれまで持っているものです。コンストラクタから値を渡す必要があるメソッドを構築するには?
アプライアンスクラスの例:
public class ElectricShower extends Shower
{
public int isOn = -1;
public int isOff = 0;
public int incrementTime;
public int x = -1;
private static ElectricMeter instance = new ElectricMeter();
public static ElectricMeter getInstance() { return instance; }
@Override
public int currentState()
{
if (x == 0)
return isOff;
else
{
return isOn;
}
//returns isOn;
}
@Override
public void useTime(int defaultTime)
{
defaultTime = 15;
incrementTime = 1;
}
public void shower()
{
//call timePasses() method
}
@Override
public int timePasses()
{
if(x == isOff)
return 0;
else
{
ElectricMeter.getInstance().incrementConsumed(electricityUse);
}
}
ElectricShower(int electricityUse, int gasUse, int waterUse, int timeOn)
{
super(electricityUse, gasUse, waterUse, timeOn);
this.electricityUse = 12 * incrementTime;
this.gasUse = 0 * incrementTime;
this.waterUse = 4 * incrementTime;
this.timeOn = 15 * incrementTime;
}
}
メーターの例:
public class ElectricMeter
{
public int incrementConsumed(int value)
{
}
public int incrementGenerated()
{
}
public boolean canGenerate()
{
}
public String getConsumed()
{
}
public String getGenerated()
{
}
}
私は次に何をする必要がある何がある:
- の値は
electricityUse
とwaterUse
とtimePasses()
else文の中でtimePasses()
他staement - 内でそれらを格納し、
ElectricMeter
クラス内incrementGenerated()
方法でelectrcityUse
の価値を置き、waterUse
変数に対して同じことを行います。
UPDATE
クラスはまだそれを動作させる方法を見つけるのに苦労し、更新されています。
あなたのフィードバックのおかげで、私は 'private ElectricMeter(){}'の行についてちょっと混乱しました。まずこれは何をするのですか?第2に、私はそれを実装するとき、引数がなく、int、int、int、intが必要なので、コンストラクタを適用できないというエラーが出る可能性があります。 – Tom
これは、コードの他の部分がメーターのインスタンスを作成しないようにするためです。このエラーが発生した場合、ElectricMeterはスーパークラスを継承しているようです。これは、メーターが何かを継承しない場合にのみ機能します。 @Tom – Sweeper
メータークラスは、Meterというスーパークラスから継承します。私は私の質問の中で私のクラスを更新した、それはまだそれを動作させる方法を考え出すことはまだできません。返信いただきありがとうございます。 – Tom