| 
 
| 键盘录入多个城市: 城市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("找不到距离");
 
 }
 }
 
 }
 
 
 
 | 
 |