我收到以下错误:
Exception in thread "main" java.lang.NullPointerException at HashMap.CountLetters.tallyPrint(CountLetters.java:12) at HashMap.CountLetters.main(CountLetters.java:21)
目标是将每个字母的出现存储在 HashMap
中。键是字母,值是出现的次数。
package HashMap;
import java.util.HashMap;
public class CountLetters {
public HashMap tallyPrint(String phrase) {
int count = 0;
HashMap<String, Integer> fav = new HashMap<String, Integer>();
for (int i = 0; i<phrase.length(); i++)
{
if (fav.containsKey(phrase.substring(i,i+1)))
fav.put("" + phrase.substring(i,i+1), fav.get(phrase)+1);
else
fav.put("" + phrase.substring(i,i+1),1);
}
return fav;
}
public static void main(String[] args) {
CountLetters x = new CountLetters();
System.out.println(x.tallyPrint("my feet smell and my nose runs"));
}
}
最佳答案
在
fav.put("" + phrase.substring(i,i+1), fav.get(phrase)+1)
子表达式
fav.get(phrase)
应该是
fav.get(phrase.substring(i,i+1))
您正在尝试增加一个计数,但不是让先前的值加 1,而是为一个不相关的键获取值,结果您得到一个 NullPointerException
尝试自动将 null
拆箱为 int
。
关于java - 一个字母在一个短语中的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13732130/