Java練習題_Map集合,遍歷車站編號及名稱、計算地鐵票價。


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM