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

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

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

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

运行示范:

1 请输入上车站: 2 沙河 3 4 您输入的上车站:沙河不存在,请重新输入上车站: 5 上地 6 7 您输入的上车站:上地不存在,请重新输入上车站: 8 朱辛庄 9 10 请输入到达站: 11 沙河 12 13 您输入的到达站:沙河不存在,请重新输入到达站: 14 西二旗 15 16 您输入的到达站:西二旗不存在,请重新输入到达站: 17 西小口 18 19 从朱辛庄到西小口共经过6站收费6元,大约需要 12分钟

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

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

示例代码:

1 1 import java.util.HashMap; 2 2 import java.util.Scanner; 3 3 import java.util.Set; 4 4 5 5 public class TestDay19_6 { 6 6 7 7 public static void main(String[] args) { 8 8 HashMap<Integer, String> hm = new HashMap<>(); 9 9 hm.put(1, "朱辛庄"); 1010 hm.put(2, "育知路"); 1111 hm.put(3, "平西府"); 1212 hm.put(4, "回龙观东大街"); 1313 hm.put(5, "霍营"); 1414 hm.put(6, "育新"); 1515 hm.put(7, "西小口"); 1616 hm.put(8, "永泰庄"); 1717 hm.put(9, "林萃桥"); 1818 hm.put(10, "森林公园南门"); 1919 hm.put(11, "奥林匹克公园"); 2020 hm.put(12, "奥体中心"); 2121 hm.put(13, "北土城"); 2222 hm.put(14, "安华桥"); 2323 hm.put(15, "安德里北街"); 2424 hm.put(16, "鼓楼大街"); 2525 hm.put(17, "什刹海"); 2626 hm.put(18, "南锣鼓巷"); 2727 hm.put(19, "中国美术馆"); 2828 2929 //遍历车站 3030 Set<Integer> sOut = hm.keySet(); 3131 for (Integer i : sOut) { 3232 System.out.println(i + "--" + hm.get(i)); 3333 } 3434 3535 @SuppressWarnings("resource") 3636 Scanner sc = new Scanner(System.in); 3737 String sStart; 3838 String sEnd; 3939 4040 // 获取上车站 4141 while (true) { 4242 System.out.println("请输入上车站:"); 4343 sStart = sc.nextLine(); 4444 if (hm.containsValue(sStart)) { 4545 break; 4646 } else { 4747 System.out.println("站点不存在,请重新输入"); 4848 } 4949 } 5050 5151 // 获取下车站 5252 while (true) { 5353 System.out.println("请输入到达站"); 5454 sEnd = sc.nextLine(); 5555 if (hm.containsValue(sEnd)) { 5656 break; 5757 } else { 5858 System.out.println("站点不存在,请重新输入"); 5959 } 6060 } 6161 6262 // 获取站点编号及间隔差 6363 int iStart = 0; 6464 int iEnd = 0; 6565 int iSub; 6666 Set<Integer> sKey = hm.keySet(); 6767 for (Integer i : sKey) { 6868 if (sStart.equals(hm.get(i))) { 6969 iStart = i; 7070 } 7171 if (sEnd.equals(hm.get(i))) { 7272 iEnd = i; 7373 } 7474 } 7575 if (iStart > iEnd) { 7676 iSub = iStart - iEnd; 7777 } else { 7878 iSub = iEnd - iStart; 7979 } 8080 8181 // 计算金额 8282 int price; 8383 if (iSub <= 3) { 8484 price = 3; 8585 } else if (iSub <= 5) { 8686 price = 4; 8787 } else { 8888 price = 4 + (iSub - 5) * 2; 8989 } 9090 // 10元封顶 9191 price = price > 10 ? 10 : price; 9292 9393 // 计算时间 9494 int time = iSub * 2; 9595 9696 System.out.println("从[" + sStart + "]到[" + sEnd + "]共经过" + iSub + "站,收费" + price + "元,大约需要" + time + "分钟"); 9797 9898 } 9999 }
点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java中map接口hashMap以及Enty之间的用法和关系

java中map接口hashMap以及Enty之间的转换首先说的是map接口:Map提供了一种映射关系,其中的元素是以键值对(keyvalue)的形式存储的,能够实现根据key快速查找value;建(key值)不可重复,value值可以重复,一个value值可以和很多key值形成对应关系,每个建最多只能映射到一个值。Ma

二叉树创建后,如何使用递归和栈遍历二叉树?

0.前言前文主要介绍了树的相关概念和原理,本文主要内容为二叉树的创建及遍历的代码实现,其中包括递归遍历和栈遍历。1.二叉树的实现思路1.0.顺序存储——数组实现前面介绍了满二叉树和完全二叉树,我们对其进行了编号——从0到n的不中断顺序编号,而恰好,数组也有一个这样的编号——数组下标,只要我们把二者联合起来,数组就能存储二叉树了。那么非满

Python中的list详解

Python中内置的一种数据类型list,列表。list是一个有序集合,所谓有序集合就是可以通过Key或者Index进行访问(无序集合,集合的元素只能遍历,比如set)。list能随时随地进行增加和删除。python中list用\\进行表示。例如:\\\friends\'fanbinbin','libinbin','xijin

Key

KeyValue是用一个不可重复的key集合对应可重复的value集合。(典型的例子是字典:通过页码的key值找字的value值)。例子:key1—value1;key2—value2;key3—value3.SortedMap:如果一个Map可以根据key值排序,则称其为SortedMap。(如字典)!!注意数组和集合的区别:数组

Java中的Map集合

Map接口简介Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value,键和值对象之间存在一种对应关系,称为映射。从Map集合中访问元素时,只要指定了Key,就能找到对应的Value,Map中的键必须是唯一的,不能重复,如果存储了相同的键,后存储的值会覆盖原有的值,简而言之就是键相同,值覆盖。Map常用