黑马程序员技术交流社区

标题: 求大神指教Map集合比較字符串問題 [打印本页]

作者: 人言落日是天涯    时间: 2017-9-14 23:39
标题: 求大神指教Map集合比較字符串問題
package other;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

/*1.项目根路径下有stations.txt文件,内容如下:
朱辛庄
育知路
平西府
回龙观东大街
霍营
育新
西小口
//....
2.利用IO流的知识读取stations.txt文件,将内容写入到subway8.txt,写入格式如下:
1=朱辛庄
2=育知路
3=平西府
4=回龙观东大街
5=霍营
//...
3.读取subway8.txt文件内容存储到map集合中,
key:表示第几站,value:表示站名,并遍历打印(可以不按顺序打印):
    第10站: 森林公园南门
第6站: 育新
第12站: 奥体中心
第13站: 北土城
//...
4.计算地铁票价规则:
总行程 3站内(包含3站)收费3元,
3站以上但不超过5站(包含5站)的收费4元,
5站以上的,在4元的基础上,每多1站增加2元,
10元封顶;
5.打印格式(需要对键盘录入的上车站和到达站进行判断,如果没有该站,提示重新输入,直到站名存在为止):
注意:每站需要2分钟
    请输入上车站:
沙河
您输入的上车站:   沙河 不存在,请重新输入上车站:
上地
您输入的上车站:    上地 不存在,请重新输入上车站:
朱辛庄
请输入到达站:
沙河
您输入的到达站: 沙河 不存在,请重新输入到达站:
西二旗
您输入的到达站: 西二旗 不存在,请重新输入到达站:
西小口
从    朱辛庄    到    西小口    共    经过6    站    收费6元,大约需要           12   分钟 */

public class Test4 {
        static Map<Integer, String> map = new HashMap<Integer, String>();
        static ArrayList<String> array = new ArrayList<String>();

        public static void main(String[] args) throws IOException {
                // num01
                // method1();
                method2();

                /*
                 */
                /*
                 * key是固定的,利用key做參照物
                 */
                // 此方法獲取坐了多少站
                // boolean flag3 = map.containsValue("霍营");
                // System.out.println(flag3);

                 int stations = method4();
                 System.out.println(stations);
                // getMoney(int num)獲取要花多少錢
                // getMoney(stations);

        }

        public static void getMoney(int num) {
                /**
                 * 总行程 3站内(包含3站)收费3元, 3站以上但不超过5站(包含5站)的收费4元, 5站以上的,在4元的基础上,每多1站增加2元,
                 * 10元封顶;
                 */
                if (num <= 3) {
                        System.out.println("收費3元");
                }
                if (num > 3 && num < 5) {
                        System.out.println("收費4元");
                }
                if (num > 5) {
                        int money = num - 5 + 4;
                        if (money >= 10) {
                                System.out.println("收費10元");
                        } else {
                                System.out.println("收費:" + money + "元");
                        }
                }
        }

        public static int method4() {
                Scanner sc = new Scanner(System.in);
                boolean flag = true;
                boolean flag2 = true;
                int key1 = -1;

                int key2 = -1;
                // 判斷起點站
                System.out.println("請輸入起點站:");
                String start = sc.nextLine();
                while (flag){
                         
                        if (map.containsKey(start)) {
                                Set<Map.Entry<Integer, String>> entrys = map.entrySet();
                                for (Map.Entry<Integer, String> entry : entrys) {
                                        int key = entry.getKey();
                                        String value = entry.getValue();
                                        if (value.equals(start)) {
                                                key1 = key;
                                                flag = false;
                                        }
                                }
                        }else {
                                System.out.println("沒有這個站,請重新輸入:");
                                start = sc.nextLine();
                        }
                }

                // 判斷終點站
                 System.out.println("請輸入終點站:");
                 String end = sc.nextLine();
                while (flag2){
                       
                        if (map.containsKey(end)) {
                                Set<Map.Entry<Integer, String>> entrys = map.entrySet();
                                for (Map.Entry<Integer, String> entry : entrys) {
                                        int key = entry.getKey();
                                        String value = entry.getValue();
                                        if (value.equals(end)) {
                                                key2 = key;
                                                flag2 = false;
                                        }
                                }
                        }else {
                                System.out.println("沒有這個站,請重新輸入:");
                                end = sc.nextLine();
                        }
                }
                return key2 - key1;
        }

        public static void method2() throws FileNotFoundException, IOException {
                /*
                 * 读取subway8.txt文件内容存储到map集合中, key:表示第几站,value:表示站名,并遍历打印(可以不按顺序打印):
                 */
                // 利用集合存儲字符串
                ArrayList<String> array = new ArrayList<String>();

                BufferedReader fr = new BufferedReader(new FileReader("subway8"));
                String s = null;
                while ((s = fr.readLine()) != null) {
                        array.add(s);
                }
                // 遍歷集合,分割字符串,存入Map
                for (String string : array) {
                        String[] str = string.split("=");
                        int key = Integer.parseInt(str[0]);
                        String value = str[1];
                        map.put(key,value);
                }
                // 打印Map
                Set<Map.Entry<Integer, String>> entrys = map.entrySet();
                for (Map.Entry<Integer, String> entry : entrys) {
                        int key = entry.getKey();
                        String value = entry.getValue();
                        array.add(value);
                        System.out.println(key+"="+value);
                }
        }

        public static void method1() throws FileNotFoundException, IOException {
                // subway8.txt
                // 創建輸入輸出劉對象
                BufferedReader fr = new BufferedReader(new FileReader("stations.txt"));
                BufferedWriter fw = new BufferedWriter(new FileWriter("subway8"));
                String s = null;
                int i = 1;
                while ((s = fr.readLine()) != null) {
                        fw.write(i + "=" + s);
                        i++;
                        fw.newLine();
                        fw.flush();
                }
                fw.close();
                fr.close();
        }
}

作者: Oliverwqcwrw    时间: 2017-9-15 10:47
貌似字符串不能比较吧,是比较字符串长度吗




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2