在我的程序中,我已经定义了一个hashmap,如下所示:
HashMap<String, Integer> dictionary = new HashMap<String, Integer>();
我必须从文本文件中读取,并将我读取的第一个单词(&#34; whoo&#34;,BTW)作为字符串键放入我的hashmap,其中1为值。我还把另一个带有&#34;虚拟&#34;的键。和值2到hashmap
try{
File f = new File("test.txt");
Scanner sc = new Scanner(f);
String word = "";
word = sc.next();
dictionary.put(word, 1);
dictionary.put("dummy", 2);
System.out.println("contains whoo as key: " + dictionary.containsKey("whoo"));
System.out.println("contains dummy as value: " + dictionary.containsKey("dummy"));
}
catch(Exception e){
System.out.println("error");
}
现在我的问题是&#34; whoo&#34;,我从我的文本文件中读取的String键,无法从hashmap的键中找到。另一方面,&#34;虚拟&#34;我直接把它作为String键放在hashmap的键中。
我需要一种能够让containsKey()找到&#34; whoo&#34;因为我的程序依赖于文件读取并使用read作为字符串键的字符到hashmap。谢谢!
编辑:
这是我正在阅读的文本文件的内容:
我做了大多数人的建议,并尝试打印出第一个字的值
System.out.println("word read is: " + word);
还添加了另一种检查,以查看我的hashmap包含哪些键
Set keys = dictionary.keySet();
for (Iterator i = keys.iterator(); i.hasNext();){
String key = (String) i.next();
System.out.println("key found in the hashmap: " + key);
}
这是输出:
即使String字包含&#34; whoo&#34;,甚至在该组键中找到,containsKey()仍然给我一个错误的
答案 0 :(得分:0)
在将word
变量添加到词典之前打印它。更好,添加断点和调试。我希望你发现它不是你认为的价值。
答案 1 :(得分:0)
程序看起来很简单,在从文件中读取时将结果输出为true。检查使用的空格,逗号或大小写。我相信这可能是个问题。
正如其他人所建议的那样,使用调试器并打印出内容肯定会帮助您找出根本原因。