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