Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将数组变量用于IF语句?_Java - Fatal编程技术网

Java 如何将数组变量用于IF语句?

Java 如何将数组变量用于IF语句?,java,Java,我正在开发一个简单的出租车计价器计算器系统。我不知道用什么来实现它。我已经写了一段代码,但是在IF语句中我不得不插入一个数组变量。我不确定这是否正确的实施方式 这就是逻辑 第一公里是50/- 接下来的10公里将收取每公里45/-的费用。如果走了2公里 ,如果行驶了3公里,收费将为50/-+45/-=95/-,即140/- 接下来的10公里将收取35/-每公里的费用 超过10公里后,无论行驶了多少公里,每公里收费25/ 这是我到目前为止编写的代码 private void btn_calAct

我正在开发一个简单的出租车计价器计算器系统。我不知道用什么来实现它。我已经写了一段代码,但是在IF语句中我不得不插入一个数组变量。我不确定这是否正确的实施方式

这就是逻辑

  • 第一公里是50/-
  • 接下来的10公里将收取每公里45/-的费用。如果走了2公里 ,如果行驶了3公里,收费将为50/-+45/-=95/-,即140/-
  • 接下来的10公里将收取35/-每公里的费用
  • 超过10公里后,无论行驶了多少公里,每公里收费25/
这是我到目前为止编写的代码

private void btn_calActionPerformed(java.awt.event.ActionEvent evt) {                                        
        int kms1 = 50;
        int kms2 = 45;
        int kms3 = 35;
        int kms4 = 25;
        String[] firstkm={"3,4,5,6,7,8,9,10,11"};
        if(txt_km.getText().equals("1")){
            lblout.setText(""+kms1);
        }
        if(txt_km.getText().equals("2")){
            lblout.setText(""+(kms1+kms2));
        }if(txt_km.getText().equals(firstkm)){
            int get = Integer.parseInt(txt_km.getText());
            int rate = get+kms2;
            lblout.setText(""+rate);
        }

}  

如果有任何其他方法可以解决此问题,请提及。

这里有一个提示:实现此方法

/**
This method returns the amount a passenger must pay for this kilometer of their trip
*/
public int chargeForKilometer(int kilometerNumberInTrip) {
  //...
}
试一试


然后通过将幻数放入数组进行重构,并在数组中循环(4次)。

如果您的条件发生了变化,并且希望避免在代码中添加if条件,我编写了一个可配置的代码

public int calculateRate(int kmCount){
    int baseRate = 50;
    int[] stepRate = {45,35};
    int step = 10;
    int fare = 0;
    int threshold = 21;
    int beyondThresholdRate = 25;

    if(kmCount>0){
        fare = baseRate;
        fare += (kmCount - threshold)<0?0:(kmCount - threshold)*beyondThresholdRate;
        kmCount = kmCount - 1;
        for(int i=0;i<=((kmCount/step) + (kmCount%step>0?1:0));i++){
            fare += (kmCount/step)==0?(kmCount%step)*stepRate[i]:step*stepRate[i];
            kmCount -=step;
            if(i==stepRate.length-1) break;
        }
    }
    return fare;
}
public int calculateRate(int kmCount){
国际单位基准利率=50;
int[]步进速率={45,35};
int步长=10;
国际票价=0;
int阈值=21;
int beyondThresholdRate=25;
如果(公里数>0){
票价=基准价格;

fare+=(kmCount-threshold)
String[]firstkm={“3,4,5,6,7,8,9,10,11”};
是一个带有一个索引的字符串数组。您可能正在寻找字符串[]firstkm={“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“11”};但这最好用作
int
数组。您的代码真是一团糟:String[]firstkm={“3,4,5,6,7,8,9,10,11”};将只创建一个值为“3,4,5,6,7,8,9,10,11”的数组元素谢谢Drew,有没有这样的添加方法。例如:{3-11}而不是{1,2,3…}@Mittal yes,这意味着我需要创建更多数组?@T.BHassim您只需要一个数组。将数组类型更改为int并删除{…}中的引号。您在这里解析了输入值
int get=Integer.parseInt(txt_km.getText())这很好,但你应该在你的
if语句之前这样做,并用它与数组中的索引进行比较。我不认为OP会那么容易得到:)同意你们的观点,我应该尝试并感谢你们的提示,这样我就知道从何处开始了。感谢米塔尔汉克斯·洛德,根据这一点,我必须调用每个索引了解费率。谢谢你,这对我帮助很大。但是我没有使用数组和循环。这段代码对我有效,我用这种方式在界面按钮中添加了代码。//第二行
int distance=Integer.parseInt(txt_km.getText();
if(distance>21){fare+=(distance-21)*25;distance=21;lblout.setText(“+fare);
//添加到每个IF语句的末尾很高兴它有帮助。如果你愿意,你可以接受它作为答案。哦,是的,还有一个问题。什么是“+=”和什么是“距离=*”在每句话的结尾。你能解释一下吗a+=b意味着a=a+b;计算票价的剩余距离必须在每一个费率水平后更新。尝试单步有无,看看会发生什么。
int fare = 0;
int distance = 0;
if (distance > 21) {
    fare += (distance - 21) * 25;
    distance = 21;
}
if (distance > 11) {
    fare += (distance - 11) * 35;
    distance = 11;
}
if (distance > 1) {
    fare += (distance - 1) * 45;
    distance = 1;
}
if (distance > 0) {
    fare += distance * 50;
}
public int calculateRate(int kmCount){
    int baseRate = 50;
    int[] stepRate = {45,35};
    int step = 10;
    int fare = 0;
    int threshold = 21;
    int beyondThresholdRate = 25;

    if(kmCount>0){
        fare = baseRate;
        fare += (kmCount - threshold)<0?0:(kmCount - threshold)*beyondThresholdRate;
        kmCount = kmCount - 1;
        for(int i=0;i<=((kmCount/step) + (kmCount%step>0?1:0));i++){
            fare += (kmCount/step)==0?(kmCount%step)*stepRate[i]:step*stepRate[i];
            kmCount -=step;
            if(i==stepRate.length-1) break;
        }
    }
    return fare;
}