【发布时间】:2015-06-03 04:58:57
【问题描述】:
我应该编写一个程序,使用 TreeMaps 返回美国给定州的首府。但是,当我运行该程序时,它甚至在我有机会输入任何内容之前返回 null。谁能告诉我怎么了?
public class Map {
private TreeMap<String, String> pairs;
public Map() {
pairs = new TreeMap<String, String>();
}
public void readFrom(String fileName) {
Scanner input = null;
try {
input = new Scanner(new File(fileName));
} catch (Exception ex) {
ex.printStackTrace();
System.exit(-1);
}
while (input.hasNext(" , ")) {
pairs.put(input.next(), input.next());
}
}
public String get(String key) {
return pairs.get(key);
}
}
public static void main(String[] args) {
Map USA = new Map();
USA.readFrom("states_and_capitals.txt");
System.out.print("Enter a state: ");
Scanner input = new Scanner(System.in);
System.out.println(USA.get(input.toString()));
}
程序读取的文本文件“states_and_capitals.txt”的格式设置为在每一行都有一个州及其大写字母,用逗号分隔(无空格),如下所示:
阿拉巴马州,蒙哥马利
阿拉斯加,朱诺
亚利桑那州,凤凰城
等等
【问题讨论】:
-
input.toString()返回的不是您的想法,而是input的字符串表示形式。您可以改用input.nextLine()。 -
你应该把主要方法放在类
Map中吗?另外我会将其重命名为MyMap,以免与java.util.Map混淆。 -
@mazaneicha 谢谢,这是一个很好的观点——现在我至少可以在它返回 null 之前输入一个输入。但是,在我输入输入并输入后,它仍然返回 null。
-
@MaxZoom 我尝试将 main 方法放入 Map 类,但这似乎没有任何作用。