AJPFX:求两个城市之间的距离

键盘录入多个城市: 城市1,城市2,城市3 以 ### 结束输出
然后再键盘录入各个城市之间的距离: 格式如下:
0,12,45
12,0,22
45,22,0

然后按照输入的两个城市,求得两个城市之间的距离:城市1 城市2

代码如下:
package com.johnson.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;

public class Test3 {

    /**
     * @param args
     */
    public static void main(String[] args) {
            //存储两个城市的字符串 如 : 长沙 武汉
            ArrayList<String> list = new ArrayList<String>();
            //存储两个城市的字符串为键,距离为值 如 : 长沙 武汉,22
            HashMap<String,Integer> cityDistance = new HashMap<String, Integer>();
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入格式如下:城市1 城市2 城市3 ###");
            String line;
            while(true){
                    line = sc.nextLine();
                    if(line.endsWith("###")){
                            break;
                    }else{
                            System.out.println("请重输入:格式如下:城市1 城市2 城市3 ###");
                    }
            }
            //去除字符串后面的###号
            line = line.substring(0,line.length()-3);

            //将所有可能的城市组合存储在集合中
            String[] arr = line.split(" ");
            for (int i = 0; i < arr.length; i++) {
                    for (int j = 0; j < arr.length; j++) {
                            list.add(arr[i]+" "+arr[j]);
                    }
            }
            System.out.println("请输入城市之间的距离:格式如下:距离1 距离2 距离3");
            String disString ;

            //将list集合中的所有城市组合与输入的距离进行匹配,并存入到map集合中
            int i = 0;
            while(true){
                    disString = sc.nextLine();
                    if(disString.endsWith("###")){
                            break;
                    }else{
                            String[] dis = disString.split(" ");
                            for (int j = 0; j < dis.length; j++) {
                                    //cityDistance.put(arr[i]+tm.get(arr[i]), Integer.parseInt(dis[j]));
                                    cityDistance.put(list.get(i), Integer.parseInt(dis[j]));
                                    i++;
                            }
                    }
            }
            //System.out.println(cityDistance);
            System.out.println("请输入两个城市,格式:城市1 城市2");
            b:for(;;){
                    String input = sc.nextLine();
                    if(input.equals("quit")){
                            break;
                    }
                    //遍历集合,查找是否存在键盘录入的两个城市
                    Set<Entry<String, Integer>> entrySet = cityDistance.entrySet();
                    a:for (Entry<String, Integer> en : entrySet) {
                            String key = en.getKey();
                            //如果存在,输出距离
                            if(input.equals(key)){
                                    System.out.println(en.getValue());
                                    break b;
                            } else{
                                    //System.out.println("找不到距离");
                                    continue a;
                            }
                    }

                    //如果遍历完之后,没有找到,则输出找不到距离
                    System.out.println("找不到距离");
                    
            }
    }

}

猜你喜欢

转载自blog.csdn.net/AJPFX/article/details/90231019