有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

一个短语中字母的出现

我得到以下错误:

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

共 (1) 个答案

  1. # 1 楼答案

    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