2017蓝桥-1.标题:购物单

import java.util.Scanner;

public class M003 {
    /*
     * 标题:购物单
     *
     * 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。
     * 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。
     * 小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。
     * 现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。
     * 取款机只能提供100元面额的纸币。小明想尽可能少取些现金,够用就行了。
     * 你的任务是计算出,小明最少需要取多少现金。
     *
     * 以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。
        -----------------
        ****     180.90       88折
        ****      10.25       65折
        ****      56.14        9折
        ****     104.65        9折
        ****     100.30       88折
        ****     297.15        半价
        ****      26.75       65折
        ****     130.62        半价
        ****     240.28       58折
        ****     270.62        8折
        ****     115.87       88折
        ****     247.34       95折
        ****      73.21        9折
        ****     101.00        半价
        ****      79.54        半价
        ****     278.44        7折
        ****     199.26        半价
        ****      12.97        9折
        ****     166.30       78折
        ****     125.50       58折
        ****      84.98        9折
        ****     113.35       68折
        ****     166.57        半价
        ****      42.56        9折
        ****      81.90       95折
        ****     131.78        8折
        ****     255.89       78折
        ****     109.17        9折
        ****     146.69       68折
        ****     139.33       65折
        ****     141.16       78折
        ****     154.74        8折
        ****      59.42        8折
        ****      85.44       68折
        ****     293.70       88折
        ****     261.79       65折
        ****      11.30       88折
        ****     268.27       58折
        ****     128.29       88折
        ****     251.03        8折
        ****     208.39       75折
        ****     128.88       75折
        ****      62.06        9折
        ****     225.87       75折
        ****      12.89       75折
        ****      34.28       75折
        ****      62.16       58折
        ****     129.12        半价
        ****     218.37        半价
        ****     289.69        8折
        --------------------

        需要说明的是,88折指的是按标价的88%计算,而8折是按80%计算,余者类推。
        特别地,半价是按50%计算。

        请提交小明要从取款机上提取的金额,单位是元。
        答案是一个整数,类似4300的样子,结尾必然是00,不要填写任何多余的内容。


        特别提醒:不许携带计算器入场,也不能打开手机。
       */

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);

        // 账单的总数
        double sum = 0;

        // 数据的索引
        int index = 0;

        // 循环读取每一行账单
        while (scanner.hasNext()) {

            // 因为我们计算的是账单总价,所以商品名称舍弃掉
            scanner.next();

            // 获取商品的价格
            double price = scanner.nextDouble();

            // 获取商品的折扣
            String zk = scanner.next();

            // 判断折扣是不是半价,如果是半价,则给商品的单价乘0.5加在sum里面
            if (zk.equals("半价")) {
                sum += price * 0.5;
            } else {

                // 否则的话讲折扣的最后一个字"折"字去掉,并且转化为整形
                int zknum = Integer.parseInt(zk.substring(0, zk.length() - 1));

                // 判断是否大于10,如果是大于10的,则说明是两位数的,需要乘以0.01,否则就乘0.1
                if (zknum >= 10)
                    sum += price * zknum * 0.01;
                else
                    sum += price * zknum * 0.1;
            }
            // 一条数据读取完毕,index++
            index++;

            // 判读数据是否读取完毕,如果数据读取完毕,则退出循环
            if (index == 50)
                break;

        }

        // 判断要输出的数是不是100的整数倍,如果是的话则直接转整形输出,否则的话将其转化成大于sum的100的整数输出
        if (sum % 100 == 0)
            System.out.println((int)sum);
        else
            System.out.println(((int)sum / 100) * 100 + 100);

    }
}

发布了5 篇原创文章 · 获赞 13 · 访问量 428

猜你喜欢

转载自blog.csdn.net/weixin_42690388/article/details/103001349