我正在为我的java类工作,我们刚开始学习HashMaps,我们有这个分配,我们创建枚举数据并将其存储在一个hashmap中以便稍后打印出来。我可以想象的是能够打印HashMap的元素。到目前为止,这是我的项目:
public class Driver <enumeration>
{
private static HashMap<String, State> stateList = new HashMap<String, State>();
public static void main(String args[]) throws IOException
{
stateList.put("1", State.CA);
stateList.put("2", State.FL);
stateList.put("3", State.ME);
stateList.put("4", State.OK);
stateList.put("5", State.TX);
for(State value : stateList.values())
{
System.out.println(value);
}
}
}
public enum State
{
CA(new StateInfo("Sacramento", 38802500)), FL(new StateInfo("Tallahassee", 19893297)),
ME(new StateInfo("Augusta", 1330089)), OK(new StateInfo("Oklahoma City", 3878051)),
TX(new StateInfo(" Austin", 26956958));
private StateInfo info;
private State(StateInfo info)
{
this.info = info;
}
public StateInfo getInfo()
{
return info;
}
public String toString()
{
return "";
}
}
public class StateInfo
{
private String capital;
private int population;
public StateInfo(String capital, int population)
{
this.capital = capital;
this.population = population;
}
public String getCapital()
{
return capital.toString();
}
public int getPopulation()
{
return population;
}
public String toString()
{
return "";
}
}
现在,当我尝试运行该程序时,它只会终止,而不会像我试图打印的状态对象的参考号那么多。我认为错误的是StateInfo类,所以我尝试改变一些东西,但没有占上风。任何人都可以告诉我,我的停赛是否正确,还是我忽略了什么?
答案 0 :(得分:6)
您已覆盖toString()
类中的State
方法:
public String toString()
{
return "";
}
因此,在循环中调用value
方法的每个toString()
都没有输出:
for(State value : stateList.values())
{
System.out.println(value);
}
更确切地说:你应该得到5个空行。
删除toString()
方法以使用Java的默认toString()
实现,该实现返回类名+ hashCode()或使其返回,例如"Capital: " + info.getCapital()
。