如果你想下一個標記將被解讀爲一個字符串,你應該使用next()
方法,而不是nextLine()
。按照您的想法,nextLine()返回被跳過的行,而不是當前行。
從nextLine()的javadoc:
此掃描器執行當前行,並返回跳過的輸入信息。此方法返回當前行的其餘部分,排除末尾的任何行分隔符。該位置設置爲下一行的開頭。 由於此方法繼續在輸入中搜索以查找行分隔符,因此如果沒有行分隔符存在,它可能會緩存搜索要跳過的行的所有輸入。
返回: 這是跳過
更改行:
String name = in.nextLine();
到
String name = in.next();
將解決您的問題。這就是你必須要做的。
此外,您需要一些條件來結束讀取輸入。您可以使用某種關鍵字,並且當讀取該關鍵字時,您知道是時候結束閱讀輸入。
這裏完整和測試的例子:
private static final String EXIT_KEYWORD = "exit";
public static void main(final String[] args) {
Hashtable<String, Integer> names = new Hashtable<String, Integer>();
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String name = in.next();
if (EXIT_KEYWORD.equals(name)) {
break;
}
int age = in.nextInt();
names.put(name, age);
}
for (Map.Entry<String, Integer> entry : names.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
什麼是錯誤? – 2014-09-03 08:55:19
我可以將多個值添加到單個哈希映射嗎? – seriallchiller 2014-09-03 09:04:53
是的,你可以,看@ Daniel或我的答案 – nem035 2014-09-03 09:17:40