Java 需要帮助使方法协同工作吗

Java 需要帮助使方法协同工作吗,java,arrays,Java,Arrays,这个程序应该计算用户给手机充电的小时数和用户想给手机充电的时间(索引0-23),并根据rateTable的说明返回成本。我遇到的问题是getChargeStartTime方法,它计算用户想为手机充电的小时数,并找到以最低成本开始充电的最佳时间。我已经能够让每种方法单独工作,但要让它们协同工作,这已被证明是一个挑战 下面是一个程序应该做什么的示例(将使用下面rateTable的值): 用户输入他们希望从索引4开始为手机充电3小时。然后,getCharging cost将转到索引4并将接下来的3个值

这个程序应该计算用户给手机充电的小时数和用户想给手机充电的时间(索引0-23),并根据rateTable的说明返回成本。我遇到的问题是getChargeStartTime方法,它计算用户想为手机充电的小时数,并找到以最低成本开始充电的最佳时间。我已经能够让每种方法单独工作,但要让它们协同工作,这已被证明是一个挑战

下面是一个程序应该做什么的示例(将使用下面rateTable的值): 用户输入他们希望从索引4开始为手机充电3小时。然后,getCharging cost将转到索引4并将接下来的3个值相加,返回88。然后,getChargeStartTime方法将花费数小时,并自行在阵列中循环,以找到最便宜的充电时间。所以在这个例子中,它最终会找到返回40的索引21-23

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 );

            }
        }
private int[]费率表=
{5,10,26,35,23,30,35,40,45,66,58,50,75,
65,30,55,44,45,32,25,31,15,10,15};
私人int计费成本(int startHour、int chargeTime){
int usercost=0;
String start=JOptionPane.showInputDialog(
“您希望在什么时间开始为手机充电?(0-23)”;
startHour=Integer.parseInt(开始);
字符串时间=JOptionPane.showInputDialog(
“您想为手机充电多少小时?”);
chargeTime=Integer.parseInt(时间);
对于(整小时=0;小时<充电时间;小时++){
用户成本+=费率表[(起始小时+小时)%24];
}
返回用户成本;
}
公共int getChargeStartTime(int chargeTime){
int-bestStartHour=0;
int minCost=getChargingCost(0,chargeTime);

对于(int hour=1;hour在您编写的代码中
cost
是错误的。您希望在那里设置
max cost
,然后循环,使该值以最低成本结束。

此处不需要参数。您可以在方法中指定
startHour
chargeTime
的值,从而您将忽略传入的值

试试这个

private int getChargingCost(){

    String start = JOptionPane.showInputDialog(
            "At what hour do you want to start charging your phone? (0-23)");
    int startHour = Integer.parseInt(start);


    String time = JOptionPane.showInputDialog(
             "How many hours do you want to charge your phone?");
    int chargeTime = Integer.parseInt(time);

    ...
}
并可能使用该方法的返回值

BatteryCharger obj = new BatteryCharger();
int cost = obj.getChargingCost(); 
此外,请仔细阅读“变量范围”的含义

无法从主方法访问chargeTime
usercost
bestStartHour

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
。。。?