PTA7-1 出租车计价

计程车计价问题考察到了分支语句的使用,以及整型与浮点型数据的转化,今天我来解的这道题既有阶梯计价,又有最后付费需要进行四舍五入的要求

题目如下:

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

  • 起步里程为3公里,起步费10元;
  • 超起步里程后10公里内,每公里2元;
  • 超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
  • 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。

输入格式:

输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。

输出格式:

在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。

解题思路(以下内容为自己写的):

先使用if-else分支语句对不同的里程进行收费计算(结果为double型);

再使用另外一层if-else分支语句对等待时间进行额外收费,结果与里程收费相加(double型);

然后再使用java自带的Math.round函数对收费结果进行int型强制转换四舍五入得到以元为单位的车费。

第一遍代码:

import java.util.Scanner;
public class Main{
    public  static void main(String[] args){
        Scanner reader=new Scanner(System.in);
        double route=reader.nextDouble();
        double charge=0;
        int payment=0;
        int wait=reader.nextInt();
        if(route<=3){
            charge=10;
        }else if(route<=10){
            charge=10+(route-3)*2;
        }else if(route>10){
            charge=24+(route-10)*3;
        }
        if(wait>=5){
            charge=charge+2*wait/5;
        }
        payment=(int)Math.round(charge);
        System.out.printf("%d",payment);
    }
}

结果报错:

1edab0f00a88469c921320019adedd8d.png

经过debug检查发现,求等待时间应该将2*wait/5改为2*(wait/5),若不加括号,假设wait=9,若先乘2再除5结果则为3,若先除5再乘2结果为2,显然题目的要求是先除5得到计费次数再乘单位收费,所以应该先除5再乘2,得到正确答案

修改之后的代码:

import java.util.Scanner;
public class Main{
    public  static void main(String[] args){
        Scanner reader=new Scanner(System.in);
        double route=reader.nextDouble();
        double charge=0;
        int payment=0;
        int wait=reader.nextInt();
        if(route<=3){
            charge=10;
        }else if(route<=10){
            charge=10+(route-3)*2;
        }else if(route>10){
            charge=24+(route-10)*3;
        }
        if(wait>=5){
            charge=charge+2*(wait/5);
        }
        payment=(int)Math.round(charge);
        System.out.printf("%d",payment);
    }
}

修改之后结果:

7c9fe4b39a514ca494842ba25b1c4bd7.png

总结:

对int型变量进行乘除,应考虑题目的要求,相应的更改乘除计算的优先级

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值