小程序交流群:528215729,加入和小伙伴们一起探讨开发疑难、运营idea吧

admin

admin

发表于 2018-05-13 14:11:03

摘要:地铁小程序(HashMap) (微信小程序开发 - 微信 小程序外包开发-微信小程序 开发教程-微信小程序开发者社区,尽在 www.mntuku.cn)

package SubMap;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class SubMap {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        Map map = new HashMap<>();
        // 读取文件信息
        BufferedReader br = new BufferedReader(new FileReader("subway.txt"));
        String line;
        int n = 1;
        while ((line = br.readLine()) != null) {
            map.put(n++, line);
        }
        // 有序打印地铁站
        print(map);

        // 输出上站站名并记录站点号
        System.out.println("请输入上站站名称:");
        Map up = Sub(sc, map);

        // 输出下站站点并记录站点号
        System.out.println("请输入下站站名称:");
        Map down = Sub(sc, map);

        // 输出上下站点
        Set upKey = up.keySet();
        for (Integer u : upKey) {
            Set downKey = down.keySet();
            for (Integer d : downKey) {
                System.out.print(" 您的上站点是:" + up.get(u) + " 您的下站点是:" + down.get(d));

            }
        }
        // 计费
        money(up, down);
    }

    private static int money(Map up, Map down) {
        int n = 0;
        // 拿到上站集合中的键
        Set upKey = up.keySet();
        // 遍历集合获得具体上站点号
        for (Integer upNum : upKey) {
            // 拿到下站集合中的键
            Set downKey = down.keySet();
            // 遍历集合获得具体下站点号
            for (Integer downNum : downKey) {
                // 得到差值
                n = Math.abs(upNum - downNum);
            }
        }

        /*
         * 计费判断条件如下: 总行程在3站以内的,包括3站。那么收费3元 行程在4到6站的,包括6站。那么收费5元
         * 超过6站的,每增加一站,在原有收费5元基础上多收2元。10元封顶! 每个站点行程时间为2分钟
         */
        int money = 0;
        //
        if (n <= 3) {
            money = 3;
        } else if (n > 3 && n <= 6) {
            money = 5;
        } else if (n > 6) {
            int m = 5 + (n - 6) * 2;
            // 判断封顶
            if (m >= 10) {
                money = 10;
            } else {
                money = m;
            }
        }

        System.out.println(" 您本次共经过:" + n + "站,用时:" + (2 * n) + "分钟,收费:" + money + "元.欢迎下次乘车");

    }

    // 输出上站站名并记录站点号
    private static Map Sub(Scanner sc, Map map) {
        // 用来记录符合要求的站信息
        Map maps = new HashMap<>();
        while (true) {
            // 键盘录入站点
            String sub = sc.nextLine();
            // 取键
            Set key = map.keySet();
            for (Integer subKey : key) {
                // 判断是否存在该站点
                if (sub.equals(map.get(subKey))) {
                    // 添加进集合
                    maps.put(subKey, sub);
                    return maps;
                }
            }
            System.out.println("您输入的站点有误,请重新输入");
        }
    }

    // 打印出地铁站
    private static void print(Map map) {
        Iterator subKey = map.keySet().iterator();
        while (subKey.hasNext()) {
            int sub = subKey.next();
            System.out.println("第" + sub + "站:" + map.get(sub));
        }

    }

}

 结果:

 

78阅读 | 0评论
你的回应