Java题:【1】将以下车站对应关系的数据存储到map集合中, key:表示站编号,value:表示站名, 并遍历打印(可以不按顺序打印):

题目

【1】将以下车站对应关系的数据存储到map集合中,
key:表示站编号,value:表示站名,
并遍历打印(可以不按顺序打印):

 站编号和站名对应关系如下:
1 朱辛庄
2 育知路
3 平西府
4 回龙观东大街
5 霍营
6 育新
7 西小口
8 永泰庄
9 林萃桥
10 森林公园南门
11 奥林匹克公园
12 奥体中心
13 北土城
14 安华桥
15 安德里北街
16 鼓楼大街
17 什刹海
18 南锣鼓巷
19 中国美术馆   

【2】计算地铁票价规则:
总行程 3站内(包含3站)收费3元,
3站以上但不超过5站(包含5站)的收费4元,
5站以上的,在4元的基础上,每多1站增加2元,
10元封顶;

需要对键盘录入的上车站
和到达站进行判断,如果没有该站,
提示重新输入,直到站名存在为止
每站需要2分钟

示范如下:

请输入上车站:
流沙河

您输入的上车站:流沙河站不存在,请重新输入上车站:
骑龙

您输入的上车站:骑龙站不存在,请重新输入上车站:
朱辛庄
您以确定在朱辛庄上站!

请输入到达站:
沙河

您输入的到达站:沙河站不存在,请重新输入到达站:
西二旗
 
您输入的到达站:西二旗站不存在,请重新输入到达站:
西小口
您以确定在朱辛庄下站!

从朱辛庄到西小口共经过6站收费6元,大约需要12分钟

解答代码

import java.util.*;

public class MapTest4 {
    /**
     * 【1】将以下车站对应关系的数据存储到map集合中,
     * key:表示站编号,value:表示站名,
     * 并遍历打印(可以不按顺序打印):
     * ------------------------------------
     *      站编号和站名对应关系如下:
     *  1 朱辛庄
     * 	2 育知路
     * 	3 平西府
     * 	4 回龙观东大街
     * 	5 霍营
     * 	6 育新
     * 	7 西小口
     * 	8 永泰庄
     * 	9 林萃桥
     * 	10 森林公园南门
     * 	11 奥林匹克公园
     * 	12 奥体中心
     * 	13 北土城
     * 	14 安华桥
     * 	15 安德里北街
     * 	16 鼓楼大街
     * 	17 什刹海
     * 	18 南锣鼓巷
     *  19 中国美术馆
     * ------------------------------------
     *
     * 【2】计算地铁票价规则:
     * 总行程 3站内(包含3站)收费3元,
     * 3站以上但不超过5站(包含5站)的收费4元,
     * 5站以上的,在4元的基础上,每多1站增加2元,
     * 10元封顶;
     *
     * 需要对键盘录入的上车站
     * 和到达站进行判断,如果没有该站,
     * 提示重新输入,直到站名存在为止
     * 每站需要2分钟
     * @param args
     */
    public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<>();
        map.put(1,"朱辛庄");
        map.put(2 ,"育知路");
        map.put(3, "平西府");
        map.put(4,"回龙观东大街");
        map.put(5 ,"霍营");
        map.put(6, "育新");
        map.put(7,"西小口");
        map.put(8,"永泰庄");
        map.put(9, "林萃桥");
        map.put(10,"森林公园南门");
        map.put(11,"奥林匹克公园");
        map.put(12,"奥体中心");
        map.put(13,"北土城");
        map.put(14,"安华桥");
        map.put(15,"安德里北街");
        map.put(16,"鼓楼大街");
        map.put(17,"什刹海");
        map.put(18,"南锣鼓巷");
        map.put(19,"中国美术馆");

        //并遍历打印(可以不按顺序打印):
        Set<Map.Entry<Integer, String>> entries = map.entrySet();
        for (Map.Entry<Integer, String> entry:entries) {
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+":"+value);
        }

        //需要对键盘录入的上车站
        //和到达站进行判断,如果没有该站,
        //提示重新输入,直到站名存在为止
        //每站需要2分钟
        Scanner sc = new Scanner(System.in);
            System.out.println("请输入上车站:");
            String startValue = sc.next();
            Collection<String> values = map.values();
            if (values.contains(startValue)){
                System.out.println("您已确认在"+startValue+"上站!");
            }else {
                while (true){
                    System.out.println("您输入的上车站:"+startValue+"站不存在,请重新输入:");
                    startValue = sc.next();
                    if (values.contains(startValue)){
                        System.out.println("您已确认在"+startValue+"上站!");
                        break;
                    }
                }
            }
        System.out.println("请输出到达站:");
        String endValue = sc.next();
        if (values.contains(endValue)){
            System.out.println("您已确定在"+endValue+"下站");
        }else {
            while (true){
                System.out.println("您输入的下车站:"+endValue+"站不存在,请重新输入:");
                endValue = sc.next();
                if (values.contains(endValue)){
                    System.out.println("您已确认在"+endValue+"下站!");
                    break;
                }
            }
        }

        //获取上站和下站value对应的key
        //开始站的key
        int startKey = 0;
        for (Map.Entry<Integer, String> entry:entries) {
            if (entry.getValue().equals(startValue)){
                 startKey = entry.getKey();
            }
        }
        //到达站的key
        int endKey = 0;
        for (Map.Entry<Integer, String> entry:entries) {
            if (entry.getValue().equals(endValue)){
                endKey = entry.getKey();
            }
        }

        //计算价格
        //总行程 3站内(包含3站)收费3元,
        //3站以上但不超过5站(包含5站)的收费4元,
        //5站以上的,在4元的基础上,每多1站增加2元,
        //10元封顶;

        //价格和时间
        int price=0;
        int time =  (endKey-startKey)*2;
        if (endKey-startKey<=3){
            price =3;
            System.out.println("从"+startValue+"到"+endValue+"共经过"+(endKey-startKey)+"站"+"收费"+price+"元,大约需要"+time+"分钟");
        }else if (endKey-startKey>3&&endKey-startKey<=5) {
            price = 4;
            System.out.println("从" + startValue + "到" + endValue + "共经过" + (endKey - startKey) + "站" + "收费" + price + "元,大约需要" + time + "分钟");
        }else if (endKey-startKey>5){
            if (endKey-startKey-5<=3){
                price=4+(endKey-startKey-5)*2;
                System.out.println("从" + startValue + "到" + endValue + "共经过" + (endKey - startKey) + "站" + "收费" + price + "元,大约需要" + time + "分钟");
            }else {
                price=10;
                System.out.println("从" + startValue + "到" + endValue + "共经过" + (endKey - startKey) + "站" + "收费" + price + "元,大约需要" + time + "分钟");
            }
        }


    }
}

输出结果

1:朱辛庄
2:育知路
3:平西府
4:回龙观东大街
5:霍营
6:育新
7:西小口
8:永泰庄
9:林萃桥
10:森林公园南门
11:奥林匹克公园
12:奥体中心
13:北土城
14:安华桥
15:安德里北街
16:鼓楼大街
17:什刹海
18:南锣鼓巷
19:中国美术馆
请输入上车站:
安华桥
您已确认在安华桥上站!
请输出到达站:
中国美术馆
您已确定在中国美术馆下站
从安华桥到中国美术馆共经过5站收费4元,大约需要10分钟

注意获取键的方式方法就很快能做出来~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值