このプログラムは、ユーザーから電話を充電し、ユーザーが自分の電話(インデックス0-23)を請求したい時間がかかるようにして、どんなレートでテーブルが言っている。私が抱えている問題は、ユーザーが電話を充電したい時間数を必要とするgetChargeStartTimeメソッドであり、最も低いコストで充電を開始するのに最適な時間を見つけます。私は、すべての方法を個別に扱うことができましたが、一貫して働かせるための課題であることが証明されています。助けが必要な方法を作る
Heresここでは、以下のrateTableの値を使用します。 ユーザーは、インデックス4から3時間かけて電話を充電したいと思っています。 4を索引付けして次の3つの値を加算して88を返します。次に、getChargeStartTimeメソッドは時間をかけて、最も安い充電時間を見つけるために配列をループします。この例では、それは最終的にあなたが書いたようなコードでは40
private int[] rateTable =
{5,10,26,35,23,30,35,40,45,66,58,50,75,
65,30,55,44,45,32,25,31,15,10,15};
private int getChargingCost(int startHour, int chargeTime){
int usercost = 0;
String start = JOptionPane.showInputDialog(
"At what hour do you want to start charging your phone? (0-23)");
startHour = Integer.parseInt(start);
String time = JOptionPane.showInputDialog(
"How many hours do you want to charge your phone?");
chargeTime = Integer.parseInt(time);
for (int hour = 0; hour < chargeTime; hour++){
usercost += rateTable[(startHour + hour) % 24];
}
return usercost;
}
public int getChargeStartTime(int chargeTime) {
int bestStartHour = 0;
int minCost = getChargingCost(0, chargeTime);
for(int hour = 1 ; hour <24 ; hour++){
int cost = getChargingCost(hour, chargeTime);
if(cost < minCost){
bestStartHour = hour;
minCost = cost;
}
return bestStartHour;
}
return chargeTime;
}
public static void main(String[] args){
BatteryCharger obj = new BatteryCharger();
obj.getChargingCost(startHour, chargeTime);
JOptionPane.showMessageDialog(null,
"Charging your phone for " + chargeTime +
" hours will cost $" + usercost + ", but if you start at hour " + bestStartHour + " it will only cost you " + cost);
}
}
'obj.getChargingCost(startHour、chargeTime)' ...あなたは 'startHour'または' chargeTime'を割り当てていません...? –