java算法_出租车计费

计算一下出租车的车费,车费由两部分组成,
公里数和等候时间。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 + "元!");
    }

你可能感兴趣的:(java算法_出租车计费)