全手写,思路也很全,不容易啊,楼主请采纳我的答案吧~
public class CitysDistance {
public static void main(String[] args) {
// 创建map集合存储城市和对应编号
HashMap<String, Integer> hm = new HashMap<String, Integer>();
Scanner sc = new Scanner(System.in);
System.out.println("请输入任意数量的城市,以###号结束");
int count = 0;// 记录每个城市对应的索引
while (true) {
String city = sc.nextLine();
if ("###".equals(city)) {
break;
} else {
hm.put(city, ++count);
}
}
// 创建一个二维数组表示两两城市的距离
int[][] distance = new int[count][count];
// 记录两两城市间的距离
System.out.println("请录入两两城市间的距离:");
for (int i = 0; i < distance.length; i++) {
for (int j = 0; j < distance.length; j++) {
// 键盘录入距离
distance[i][j] = sc.nextInt();
}
}
// 方便查询,做成死循环
while (true) {
// 键盘录入两个城市
System.out.println("请输入你想要查询的两个城市:");
String city1 = sc.next();
String city2 = sc.next();
// 通过键找到值,而这个值又作为二维数组的索引
int index1 = hm.get(city1);
int index2 = hm.get(city2);
// 通过索引找到距离
System.out.println(city1 + "和" + city2 + "的距离是:"
+ distance[index1 - 1][index2 - 1]);
System.out.println("还要查询吗,查询则按1,不查询按2");
int num = sc.nextInt();
if (num==1) {
continue;
}else if (num==2) {
break;
}else{
System.out.println("输入错误,下次再会!");
break;
}
}
}
}
|