有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在开发一个简单的出租车计价器计算器系统。我不知道用什么来实现它。我已经写了一段代码,但是在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);
        }

}  

如果有任何其他方法来解决这个问题,请提出来


共 (4) 个答案

  1. # 1 楼答案

    如果您的条件发生变化,并且希望避免在代码中添加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;
    }
    

    不过,它有点复杂,也很灵活

  2. # 2 楼答案

    试试看

    String[] firstkm={3,4,5,6,7,8,9,10,11};
        if(txt_km.getText().equals(firstkm[1])){
            lblout.setText(""+kms1);
        }
    

  3. # 3 楼答案

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

    然后重构,将神奇的数字放入数组中,并在数组中循环(4次)

  4. # 4 楼答案

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

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