计算一下出租车的车费,车费由两部分组成,
公里数和等候时间。0-3公里,收10元;4-15公里,
每公里2元;15公里以上的部分,每公里3元。等候时间,
每2分半收1元,不足2分半的不收费。不足1公里的按1公里计算。
车费是公里数钱+等候时间的钱。
比如:18公里299秒,应收车费:44
要求:输入公里数和秒数,输出车费。
public static void main(String[] args) {
//作业:------------计算出租车计费
Scanner sc = new Scanner(System.in);
Scanner min = new Scanner(System.in);
//考虑到距离和时间都可以输入小数,所以用了double
double sumMemory = 0;//定义一个变量,存金额的大小
double km = sc.nextDouble();//行驶距离
double waitTime = sc.nextDouble();//等待时间
//小于等于3公里
if (km <= 3) {
//0-3公里10元,然后时间除以2.5,保留整数乘以价格
sumMemory = 10 + Math.floor(waitTime / 2.5) * 1;
//大于3小于等于15公里
} else if (km > 3 && km <= 15) {
//因为路程:不足1公里的按1公里计算。所有需要判断路程是不是整数,这里用取余的方式判断,如果路程除以1.余数等于0,则是整数,否则走else
if (km % 1 == 0) {
//Math.floor 保留整数部分,这样就舍弃了不足2.5分钟的部分
sumMemory = km * 2 + Math.floor(waitTime / 2.5) * 1;
} else {
//对路程整数不保留小数,在加上3-15公里的单价(把余数默认1公里)
sumMemory = Math.floor(km / 1) * 2 + 2 + Math.floor(waitTime / 2.5) * 1;
}
} else if (km > 15) {//这里的算法与3-15没有区别
if (km % 1 == 0) {
sumMemory = km * 3 + Math.floor(waitTime / 2.5) * 1;
} else {
sumMemory = Math.floor(km / 1) * 3 + 3 + Math.floor(waitTime / 2.5) * 1;
}
}
System.out.println("你需要付的车费是:" + sumMemory + "元!");
}