package SubMap; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Scanner; import java.util.Set; public class SubMap { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); Map<Integer, String> map = new HashMap<>(); // 读取文件信息 BufferedReader br = new BufferedReader(new FileReader("subway.txt")); String line; int n = 1; while ((line = br.readLine()) != null) { map.put(n++, line); } // 有序打印地铁站 print(map); // 输出上站站名并记录站点号 System.out.println("请输入上站站名称:"); Map<Integer, String> up = Sub(sc, map); // 输出下站站点并记录站点号 System.out.println("请输入下站站名称:"); Map<Integer, String> down = Sub(sc, map); // 输出上下站点 Set<Integer> upKey = up.keySet(); for (Integer u : upKey) { Set<Integer> downKey = down.keySet(); for (Integer d : downKey) { System.out.print(" 您的上站点是:" + up.get(u) + " 您的下站点是:" + down.get(d)); } } // 计费 money(up, down); } private static int money(Map<Integer, String> up, Map<Integer, String> down) { int n = 0; // 拿到上站集合中的键 Set<Integer> upKey = up.keySet(); // 遍历集合获得具体上站点号 for (Integer upNum : upKey) { // 拿到下站集合中的键 Set<Integer> downKey = down.keySet(); // 遍历集合获得具体下站点号 for (Integer downNum : downKey) { // 得到差值 n = Math.abs(upNum - downNum); } } /* * 计费判断条件如下: 总行程在3站以内的,包括3站。那么收费3元 行程在4到6站的,包括6站。那么收费5元 * 超过6站的,每增加一站,在原有收费5元基础上多收2元。10元封顶! 每个站点行程时间为2分钟 */ int money = 0; // if (n <= 3) { money = 3; } else if (n > 3 && n <= 6) { money = 5; } else if (n > 6) { int m = 5 + (n - 6) * 2; // 判断封顶 if (m >= 10) { money = 10; } else { money = m; } } System.out.println(" 您本次共经过:" + n + "站,用时:" + (2 * n) + "分钟,收费:" + money + "元.欢迎下次乘车"); } // 输出上站站名并记录站点号 private static Map<Integer, String> Sub(Scanner sc, Map<Integer, String> map) { // 用来记录符合要求的站信息 Map<Integer, String> maps = new HashMap<>(); while (true) { // 键盘录入站点 String sub = sc.nextLine(); // 取键 Set<Integer> key = map.keySet(); for (Integer subKey : key) { // 判断是否存在该站点 if (sub.equals(map.get(subKey))) { // 添加进集合 maps.put(subKey, sub); return maps; } } System.out.println("您输入的站点有误,请重新输入"); } } // 打印出地铁站 private static void print(Map<Integer, String> map) { Iterator<Integer> subKey = map.keySet().iterator(); while (subKey.hasNext()) { int sub = subKey.next(); System.out.println("第" + sub + "站:" + map.get(sub)); } } }
地铁小程序(HashMap)
最新推荐文章于 2023-04-08 19:38:12 发布