【发布时间】:2018-12-11 18:57:38
【问题描述】:
下午好。
我有一个 City 类,它接收到其他 City 对象的不同距离值。
但是,在我创建城市并添加距离后,每个城市都会获得相同的距离值,这是最后一个添加的城市的值。
也就是说,运行之后 cityA.toString 的输出应该是 {B=5, C=4, D=7, E=6, F=5, G=7, H=4, I=2, J=9} 而不是 {A=6, B=5, C=5, D=6, E=4, F=8, G=5, H=4, I=3, J=8}
你知道我做错了什么吗?谢谢
public class City {
private String name;
private static HashMap<String, Integer> distancias;
public City(String name){
this.name = name;
distancias = new HashMap<String, Integer>();
}
public void insertDistances(City city, int dist) {
distancias.put(city.getName(), dist);
}
public static void main(String[] args) {
City cityA = new City("A");
City cityB = new City("B");
City cityC = new City("C");
City cityD = new City("D");
City cityE = new City("E");
City cityF = new City("F");
City cityG = new City("G");
City cityH = new City("H");
City cityI = new City("I");
City cityJ = new City("J");
cityA.insertDistances(cityB, 5);
cityA.insertDistances(cityC, 4);
cityA.insertDistances(cityD, 7);
cityA.insertDistances(cityE, 6);
cityA.insertDistances(cityF, 5);
cityA.insertDistances(cityG, 7);
cityA.insertDistances(cityH, 4);
cityA.insertDistances(cityI, 2);
cityA.insertDistances(cityJ, 9);
cityB.insertDistances(cityA, 6);
cityB.insertDistances(cityC, 5);
cityB.insertDistances(cityD, 6);
cityB.insertDistances(cityE, 4);
cityB.insertDistances(cityF, 8);
cityB.insertDistances(cityG, 5);
cityB.insertDistances(cityH, 4);
cityB.insertDistances(cityI, 3);
cityB.insertDistances(cityJ, 8);
}
}
【问题讨论】:
-
从
distancias中移除static修饰符 -
你的
toString方法在哪里? -
是的,因为
private static HashMap<String, Integer> distancias;是静态的
标签: java dictionary object