某市出租车计费标准如下图所示,请根据此标准完成一个出租车计费模拟功能,能够计算总费用和列出产生费用项目详细情况说明,帮助出租车师傅和乘客了解计费标准
综合上述表格可以得出总费用=里程费用+低速行驶费(或者等候费)+预约叫车服务费+空驶费+夜间收费+燃油附加费,需要收集的数据有:里程数、低速行驶时长、(早晚高峰行驶时长和其他时间段行驶时长)。是否预约叫车(按四小时为标准)开始乘坐出租车时间,出租车到达终点站时间,结合这些数据和表中提供的标准就可以使用程序计算总车费了
1.声明好程序所需的变量,用于储存数据,请注意数据类型
2.提示用户输入里程,总乘车时间,是否预约叫车(如果是预约叫车,还需确认是否在四小时之内),是否有低速行驶,(如果有,提示输入低速行驶时间,需要考虑早高晚高峰),如果里程超过15公里,需要输入是否往返两公里范围内,决定空驶费。分别将这些用户输入值通过赋值存入对应的变量中
3.根据计费标准和用户输入的数据进行总费用计算处理
4.输出总费用和每个产生费用单项的详细说明
package day01_text1;
import java.util.Scanner;
public class demo03 {
/*
* 出租车计费模拟功能
*/
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
double liChengFei=0;//里程费
double diSuXingShiFei=0;//低速行驶费
double yuYueJiaoCheFuWuFei=0;//预约叫车服务费
double kongShiFei=0;//空驶费
double yeJianShouFei=0;//夜间收费
double ranYouFuJiaFei=1;//燃油附加费
double danJia=2.3;//单价
double zongFeiYong;//总费用
/*
* 里程费
*/
System.out.println("请输入总里程");
double zongLiCheng=input.nextDouble();
if(zongLiCheng>3) {
liChengFei=13+(zongLiCheng-3)*danJia;
}else {
liChengFei=13;
}
/*
* 低速行驶费用
*/
System.out.println("是否有低速行驶:true或false");
boolean diSu =input.nextBoolean();
if(diSu) {
System.out.println("请输入低速时行驶时间");
double diSuXingShiShiJian=input.nextDouble();
System.out.println("是否为早晚高峰:true或false");
boolean gaoFeng =input.nextBoolean();
if(gaoFeng) {
diSuXingShiFei=(diSuXingShiShiJian/5)*danJia*2;
}else {
diSuXingShiFei=diSuXingShiShiJian*danJia;
}
}
/*
* 预约叫车服务费
*/
System.out.println("是否预约叫车:true或false");
boolean yuYue =input.nextBoolean();
if(yuYue) {
System.out.println("请输入提前预约叫车的时间");
int siXiaoShiZhiNei=input.nextInt();
if(siXiaoShiZhiNei>4) {
yuYueJiaoCheFuWuFei=6;
}else {
yuYueJiaoCheFuWuFei=5;
}
}
/*
* 空驶费
*/
if(zongLiCheng>15) {
System.out.println("是否往返两公里范围内:true或false");
boolean wangFan=input.nextBoolean();
if(!wangFan) {
kongShiFei=(zongLiCheng-15)*danJia*1.5;
}
}
/*
* 夜间收费
*/
System.out.println("请输入是否为夜间行驶23:00(含)~次日5点(不含):true或false");
boolean yeJianXingShi=input.nextBoolean();
if(yeJianXingShi) {
yeJianShouFei=(zongLiCheng-3)*danJia*0.2;//注意哦 因为这里是加收的,所以不是*1.2
}
zongFeiYong=liChengFei+diSuXingShiFei+yuYueJiaoCheFuWuFei+kongShiFei+yeJianShouFei+ranYouFuJiaFei;
System.out.println("本次总费用:"+Math.round(zongFeiYong));
System.out.println("里程费用:"+Math.round(liChengFei));
System.out.println("低速行驶费:"+ Math.round(diSuXingShiFei));
System.out.println("预约叫车服务费:"+Math.round(yuYueJiaoCheFuWuFei));
System.out.println("空驶费:"+Math.round(kongShiFei));
System.out.println("夜间收费:"+Math.round(yeJianShouFei));
System.out.println("燃油附加费:"+Math.round(ranYouFuJiaFei));
}
}
代码执行结果