2016-12-12 88 views
-2

在我的節目,我如下定義一個HashMap:HashMap containsKey()找不到我已經放置的字符串鍵。該字符串鍵值是讀取文本文件

HashMap<String, Integer> dictionary = new HashMap<String, Integer>(); 

我有一個文本文件閱讀,並把第一個字我讀(這是「whoo」,順便說一句)作爲我的散列表的字符串鍵,1作爲一個值。我也把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"); 
} 

我現在的問題是,「喔」,我從我的文本文件讀取字符串鍵,不能被發現從hashmap的鍵。另一方面,我直接將其作爲String鍵使用的「dummy」可以在hashmap的鍵中找到。

what the program prints when I run the code

我需要一種方法能夠使的containsKey()找到「喔」,因爲我的程序依賴於文件的閱讀和使用閱讀作爲字符串鍵HashMap中的話。謝謝!

編輯:

這是文本文件,我讀的內容:

text file

我做了什麼,你們中的大多數建議,並試圖打印出字第

的價值
System.out.println("word read is: " + word); 

並且還添加了另一種檢查來查看我的散列表包含哪些鍵

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

即使字符串字包含「喔」了,甚至在一組密鑰的發現的containsKey()仍然給我一種虛假

+3

我認爲你需要發佈一個有效的[mcve]以及一個小版本的文本文件,並觀察與預期的輸出,以獲得體面的答案。 –

+1

如果在地圖中未找到該字符串,則不會從該文件讀取「whoo」。 – 4castle

+0

您確實需要使用調試器學習,或者至少將日誌記錄添加到代碼中。檢查單詞的價值。檢查你的地圖包含什麼。 –

回答

0

打印word變量,然後將其添加到字典中。更好的是,添加一個斷點和調試。我希望你會發現它不是你認爲它的價值。

0

該程序看起來很直接,從文件讀取時輸出結果爲真。檢查空格,逗號或使用的案例。我相信這可能是問題。

正如其他人所建議的那樣,使用調試器並打印出內容肯定會幫助您找出根本原因。

相關問題