Java练习题_Map集合,遍历车站编号及名称、计算地铁票价。

Wesley13
• 阅读 751

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

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

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

运行示范:

    请输入上车站:
    沙河
     
    您输入的上车站:沙河不存在,请重新输入上车站:
    上地
    
    您输入的上车站:上地不存在,请重新输入上车站:
    朱辛庄
    
    请输入到达站:
    沙河
    
    您输入的到达站:沙河不存在,请重新输入到达站:
    西二旗
     
    您输入的到达站:西二旗不存在,请重新输入到达站:
    西小口
    
    从朱辛庄到西小口共经过6站收费6元,大约需要 12分钟

站编号和站名对应关系如下:

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

示例代码:

 1 import java.util.HashMap;
 2 import java.util.Scanner;
 3 import java.util.Set;
 4 
 5 public class TestDay19_6 {
 6 
 7     public static void main(String[] args) {
 8         HashMap<Integer, String> hm = new HashMap<>();
 9         hm.put(1, "朱辛庄");
10         hm.put(2, "育知路");
11         hm.put(3, "平西府");
12         hm.put(4, "回龙观东大街");
13         hm.put(5, "霍营");
14         hm.put(6, "育新");
15         hm.put(7, "西小口");
16         hm.put(8, "永泰庄");
17         hm.put(9, "林萃桥");
18         hm.put(10, "森林公园南门");
19         hm.put(11, "奥林匹克公园");
20         hm.put(12, "奥体中心");
21         hm.put(13, "北土城");
22         hm.put(14, "安华桥");
23         hm.put(15, "安德里北街");
24         hm.put(16, "鼓楼大街");
25         hm.put(17, "什刹海");
26         hm.put(18, "南锣鼓巷");
27         hm.put(19, "中国美术馆");
28         
29         //遍历车站
30         Set<Integer> sOut = hm.keySet();
31         for (Integer i : sOut) {
32             System.out.println(i + "--" + hm.get(i));
33         }
34         
35         @SuppressWarnings("resource")
36         Scanner sc = new Scanner(System.in);
37         String sStart;
38         String sEnd;
39 
40         // 获取上车站
41         while (true) {
42             System.out.println("请输入上车站:");
43             sStart = sc.nextLine();
44             if (hm.containsValue(sStart)) {
45                 break;
46             } else {
47                 System.out.println("站点不存在,请重新输入");
48             }
49         }
50 
51         // 获取下车站
52         while (true) {
53             System.out.println("请输入到达站");
54             sEnd = sc.nextLine();
55             if (hm.containsValue(sEnd)) {
56                 break;
57             } else {
58                 System.out.println("站点不存在,请重新输入");
59             }
60         }
61 
62         // 获取站点编号及间隔差
63         int iStart = 0;
64         int iEnd = 0;
65         int iSub;
66         Set<Integer> sKey = hm.keySet();
67         for (Integer i : sKey) {
68             if (sStart.equals(hm.get(i))) {
69                 iStart = i;
70             }
71             if (sEnd.equals(hm.get(i))) {
72                 iEnd = i;
73             }
74         }
75         if (iStart > iEnd) {
76             iSub = iStart - iEnd;
77         } else {
78             iSub = iEnd - iStart;
79         }
80 
81         // 计算金额
82         int price;
83         if (iSub <= 3) {
84             price = 3;
85         } else if (iSub <= 5) {
86             price = 4;
87         } else {
88             price = 4 + (iSub - 5) * 2;
89         }
90         // 10元封顶
91         price = price > 10 ? 10 : price;
92 
93         // 计算时间
94         int time = iSub * 2;
95 
96         System.out.println("从[" + sStart + "]到[" + sEnd + "]共经过" + iSub + "站,收费" + price + "元,大约需要" + time + "分钟");
97 
98     }
99 }
点赞
收藏
评论区
推荐文章
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
22 22
3年前
二叉树创建后,如何使用递归和栈遍历二叉树?
0.前言前文主要介绍了树的相关概念和原理,本文主要内容为二叉树的创建及遍历的代码实现,其中包括递归遍历和栈遍历。1.二叉树的实现思路1.0.顺序存储——数组实现前面介绍了满二叉树和完全二叉树,我们对其进行了编号——从0到n的不中断顺序编号,而恰好,数组也有一个这样的编号——数组下标,只要我们把二者联合起来,数组就能存储二叉树了。那么非满
Wesley13 Wesley13
3年前
java中map接口hashMap以及Enty之间的用法和关系
java中map接口hashMap以及Enty之间的转换首先说的是map接口:Map提供了一种映射关系,其中的元素是以键值对(keyvalue)的形式存储的,能够实现根据key快速查找value;建(key值)不可重复,value值可以重复,一个value值可以和很多key值形成对应关系,每个建最多只能映射到一个值。Ma
Stella981 Stella981
3年前
Python中的list详解
Python中内置的一种数据类型list,列表。list是一个有序集合,所谓有序集合就是可以通过Key或者Index进行访问(无序集合,集合的元素只能遍历,比如set)。list能随时随地进行增加和删除。python中list用\\进行表示。例如:\\\friends\'fanbinbin','libinbin','xijin
Stella981 Stella981
3年前
Key
KeyValue是用一个不可重复的key集合对应可重复的value集合。(典型的例子是字典:通过页码的key值找字的value值)。例子:key1—value1;key2—value2;key3—value3.SortedMap:如果一个Map可以根据key值排序,则称其为SortedMap。(如字典)!!注意数组和集合的区别:数组
Wesley13 Wesley13
3年前
Java中的Map集合
Map接口简介Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value,键和值对象之间存在一种对应关系,称为映射。从Map集合中访问元素时,只要指定了Key,就能找到对应的Value,Map中的键必须是唯一的,不能重复,如果存储了相同的键,后存储的值会覆盖原有的值,简而言之就是键相同,值覆盖。Map常用
Wesley13 Wesley13
3年前
Java之五种遍历Map集合的方式
摘要:在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历。在java中所有的map都实现了Map接口,因此所有的Map都可以用以下的方式去遍历。这篇文章主要给大家介绍了关于Java中遍历Map集合的5种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面一起学习学
Stella981 Stella981
3年前
Map查找表,队列和栈
存入keyvalue对Vput(Kk,Vv);获取key所对应的value值Vget(Kk);判断Map是否包含给定的key或value值:booleancontainsKey(Kk),booleancontainsValue(Vv);遍历所有的key:Set<KkeySet();遍历所有keyvalue对Set<Entrye
Wesley13 Wesley13
3年前
Java方面技术点小整理
Java中的集合吗?java中的集合分为value、keyvalueg两种存储值有分为list和setList有序的,可以重复Set是序的,不可以重复的根据equals和hashCode判断如果一个对象要存储在set中,必须重写equals和hashCode的方法;存储keyvalue的为map
3A网络 3A网络
2年前
Redis 存储对象信息是用 Hash 还是 String
Redis存储对象信息是用Hash还是StringRedis内部使用一个RedisObject对象来表示所有的key和value,RedisObject中的type,则是代表一个value对象具体是何种数据类型,它包含字符串(String)、链表(List)、哈希结构(Hash)、集合(Set)、有序集合(Sortedset)。