我应该用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“的格式使每一行上都有一个状态及其大写,用逗号(没有空格)分隔,如下所示:
阿拉巴马州蒙哥马利
阿拉斯加朱诺
亚利桑那州,凤凰城
等。
发布于 2015-06-02 20:48:44
检查一下,我修复了从文本文件读取的部分,并填充了TreeMap。我测试并工作得很好。
public class Map {
private TreeMap<String, String> pairs;
public Map() {
pairs = new TreeMap<String, String>();
}
public void readFrom(String fileName) {
try {
Scanner input = new Scanner(new File(fileName));
while (input.hasNextLine()) {
String [] parts = input.nextLine().split(",");
if (parts.length == 2)
pairs.put(parts[0], parts[1]);
}
} catch (Exception ex) {
ex.printStackTrace();
System.exit(-1);
}
}
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.nextLine()));
}
}https://stackoverflow.com/questions/30605908
复制相似问题