Hashtable contains() 不读取 char 类型
Hashtable contains() doesn't read char type
出于某种原因,我的哈希表的 contains()
方法不起作用。我正在尝试创建一个哈希表来记录每个字母在一个单词中出现的次数。
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);
}
}
这是因为 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);
出于某种原因,我的哈希表的 contains()
方法不起作用。我正在尝试创建一个哈希表来记录每个字母在一个单词中出现的次数。
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);
}
}
这是因为 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);