【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 }