天津出租车计费规则
代码中没有考虑费用的四舍五入
package code;
import java.util.Scanner;
public class Test {
public static final double BASICS_MILEAGE = 3.00; //基础里程
public static final double MILEAGE_MIN = 10.00; // 最小区间
public static final double UNIT_PRICE =2.20; // 单价
public static final double BASICS_PRICE =11.00; // 起步价
public static final double UNIT_WAIT_TIME = 3.00; // 等候时间 计价时长
public static void main(String[] args) {
double mileage =0; //里程
System.out.println("请输入行驶里程");
Scanner a = new Scanner(System.in);
mileage=a.nextDouble();
boolean night = true; //夜间
System.out.println("是否为午夜??");
night=a.nextBoolean();
double waitTime=0;
System.out.println("请输入等候时间");
waitTime=a.nextDouble();
//判断是否是午夜
double markup = 1.0;
if(night){
markup = 1.3; // 午夜 起步价和单价涨百分之30:
}
pay(mileage,waitTime,markup);
}
public static void pay(double mileage,double waitTime,double markup){
if(mileage<=BASICS_MILEAGE){ //判断里程是否小于3km
//时间除以3 ,得商
//这里暂且直接看几公里
double waitMileage = waitTime/3; //等候时间产生的额外里程: 等候时间换算成公里数--每3分钟计1km
if(waitMileage+mileage<=BASICS_MILEAGE){
System.out.println("收费 : "+ BASICS_PRICE*markup + "元");
}else {
double v = BASICS_PRICE*markup + (waitMileage + mileage - BASICS_MILEAGE) * UNIT_PRICE;
System.out.println("收费: " + v +"元");
}
}else if(mileage<=(MILEAGE_MIN)&&mileage>BASICS_MILEAGE){//10
double _mileage = mileage-BASICS_MILEAGE; // 需要计算的里程
double a = _mileage * UNIT_PRICE*markup;
double v = BASICS_PRICE*markup + a + waitTime*UNIT_PRICE;
System.out.println("收费: +" + v+"元");
}else if(mileage<=MILEAGE_MIN+5&&mileage>MILEAGE_MIN){//10-15
//11 + 7*2.2 + (mileage-10)*UNIT_PRICE*1.3+ 等候*2.2
double v = BASICS_PRICE*markup + 7 * 2.2*markup + (mileage - 10) * UNIT_PRICE * 1.3*markup + waitTime * UNIT_PRICE;
System.out.println("收费: "+ v);
}else if(mileage<=MILEAGE_MIN+20&&mileage>15){
// 11 + 7*2.2 +5*UNIT_PRICE*1.3 + (mileage-15)*1.5 +等候*2.2
double v = BASICS_PRICE*markup + 7 * 2.2*markup + 5 * UNIT_PRICE * 1.3*markup + (mileage - 15) *UNIT_PRICE* 1.5*markup + waitTime * UNIT_PRICE;
System.out.println("收费: "+ v);
}
}
}