写一个校园导航的java代码
时间: 2023-08-22 15:03:38 浏览: 51
以下是一个简单的校园导航的Java代码,可以用来实现基本的地图导航功能。
```java
import java.util.*;
public class CampusNavigator {
private Map<String, Map<String, Integer>> campusMap;
public CampusNavigator() {
// 初始化地图
campusMap = new HashMap<>();
campusMap.put("图书馆", new HashMap<>());
campusMap.get("图书馆").put("教学楼A", 10);
campusMap.put("教学楼A", new HashMap<>());
campusMap.get("教学楼A").put("图书馆", 10);
campusMap.get("教学楼A").put("教学楼B", 15);
campusMap.put("教学楼B", new HashMap<>());
campusMap.get("教学楼B").put("教学楼A", 15);
campusMap.get("教学楼B").put("食堂", 20);
campusMap.put("食堂", new HashMap<>());
campusMap.get("食堂").put("教学楼B", 20);
}
public void navigate(String start, String end) {
Set<String> visited = new HashSet<>();
Map<String, Integer> distances = new HashMap<>();
Map<String, String> previous = new HashMap<>();
for (String location : campusMap.keySet()) {
distances.put(location, Integer.MAX_VALUE);
}
distances.put(start, 0);
while (!visited.contains(end)) {
String current = null;
int distance = Integer.MAX_VALUE;
for (String location : campusMap.keySet()) {
if (!visited.contains(location) && distances.get(location) < distance) {
current = location;
distance = distances.get(location);
}
}
visited.add(current);
Map<String, Integer> neighbors = campusMap.get(current);
for (String neighbor : neighbors.keySet()) {
int newDistance = distances.get(current) + neighbors.get(neighbor);
if (newDistance < distances.get(neighbor)) {
distances.put(neighbor, newDistance);
previous.put(neighbor, current);
}
}
}
LinkedList<String> path = new LinkedList<>();
String location = end;
while (previous.get(location) != null) {
path.addFirst(location);
location = previous.get(location);
}
path.addFirst(start);
System.out.println("从 " + start + " 到 " + end + " 的最短路径为:");
for (String node : path) {
System.out.print(node + " -> ");
}
System.out.println("距离为 " + distances.get(end) + " 米");
}
public static void main(String[] args) {
CampusNavigator navigator = new CampusNavigator();
navigator.navigate("图书馆", "食堂");
}
}
```
上述代码实现了一个校园导航程序,通过输入起点和终点,可以计算出两点之间的最短路径和距离。在程序中,我们使用了Dijkstra算法来计算最短路径,并使用HashMap和LinkedList来存储计算过程中的数据。注意,在实际应用中,我们需要根据校园具体情况来进行地图的初始化和路径计算。