使用 TreeMaps(21.9- Java 简介,Liang,第 10 版)
Working with TreeMaps (21.9- Intro to Java, Liang, 10th Edition)
我应该编写一个程序 returns U.S 中给定州的首府。使用 TreeMap。但是,当我 运行 它时,程序 returns 为空,我什至没有机会输入任何内容。谁能告诉我怎么了?
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" 的格式使得每一行都有一个州及其首府,用逗号分隔(无空格),如下所示:
阿拉巴马州,蒙哥马利
阿拉斯加,朱诺
亚利桑那州,凤凰城
等等
要使用扫描仪读取字符串输入,您应该使用下面的方法
scanner.nextLine();
所以在你的代码中你应该这样做
System.out.print("Enter a state: ");
Scanner input = new Scanner(System.in);
String stateName=input.nextLine();
System.out.println(USA.get(stateName));
输入状态名后使用回车。
检查一下,我修复了您从文本文件中读取并填充 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()));
}
}
我应该编写一个程序 returns U.S 中给定州的首府。使用 TreeMap。但是,当我 运行 它时,程序 returns 为空,我什至没有机会输入任何内容。谁能告诉我怎么了?
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" 的格式使得每一行都有一个州及其首府,用逗号分隔(无空格),如下所示:
阿拉巴马州,蒙哥马利
阿拉斯加,朱诺
亚利桑那州,凤凰城
等等
要使用扫描仪读取字符串输入,您应该使用下面的方法
scanner.nextLine();
所以在你的代码中你应该这样做
System.out.print("Enter a state: ");
Scanner input = new Scanner(System.in);
String stateName=input.nextLine();
System.out.println(USA.get(stateName));
输入状态名后使用回车。
检查一下,我修复了您从文本文件中读取并填充 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()));
}
}