HashMap containsKey()找不到我放的String键。 String键的值来自于读取文本文件

时间:2016-12-12 17:12:15

标签: java hashmap key

在我的程序中,我已经定义了一个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的键中。

what the program prints when I run the code

我需要一种能够让containsKey()找到&#34; whoo&#34;因为我的程序依赖于文件读取并使用read作为字符串键的字符到hashmap。谢谢!

编辑:

这是我正在阅读的文本文件的内容:

text file

我做了大多数人的建议,并尝试打印出第一个字的值

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);

}

这是输出:

output

即使String字包含&#34; whoo&#34;,甚至在该组键中找到,containsKey()仍然给我一个错误的

2 个答案:

答案 0 :(得分:0)

在将word变量添加到词典之前打印它。更好,添加断点和调试。我希望你发现它不是你认为的价值。

答案 1 :(得分:0)

程序看起来很简单,在从文件中读取时将结果输出为true。检查使用的空格,逗号或大小写。我相信这可能是个问题。

正如其他人所建议的那样,使用调试器并打印出内容肯定会帮助您找出根本原因。