2015-10-14 34 views
1

由於某些原因,我的散列表的方法不起作用。我試圖創建一個散列表,記錄每個字母在單詞中找到多少次。Hashtable contains()不讀char類型

character : # of occurrences

我將不勝感激任何見解我在做什麼錯誤。

Hashtable<Character, Integer> table = new Hashtable<Character, Integer>(); 
char[] array = word.toCharArray(); 

//inserting letters into table 
for (char letter : array) { 

    //letter is already in table 
    if (table.contains(letter)) { 
     int x = table.get(letter); 
     x++; 
     //overwriting with updated value 
     table.put(letter, x); 
    } 
    //if letter is not already in table 
    else { 
     table.put(letter, 1); 
    } 
} 

回答

5

這是因爲contains方法尋找價值,而不是鑰匙,你必須使用接收你的情況 字符使用containsKey()方法,它應該是這樣

更新:怎麼樣這個重構?

 String word ="hello"; 
    Hashtable<Character, Integer> table = new Hashtable<Character, Integer>(); 

    //inserting letters into table 
    int x; 
    for (char letter : word.toCharArray()) { 

     //letter is already in table 
     if (table.containsKey(letter)) { 
      x = table.get(letter)+1; 
     } 
     //if letter is not already in table 
     else { 
      x=1; 
     } 
     table.put(letter, x); 
    } 
    System.out.println(table); 
+0

...我是個傻瓜。謝謝。 – user3423448

+0

我更新了代碼,這是我的輸出{l = 2,h = 1,e = 1,o = 1} –

相關問題