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