java - 一个字母在一个短语中的出现

标签 java string

我收到以下错误:

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/

相关文章:

java - 打印 10x10 表中列表的元素

java - 我的 firebase recyclerview 仅在单击任何列表时从列表中选取第一个数据

string - 在字符串中交换字符的最低成本,因此没有 3 个相同的字符是连续的

bash 3.2.57 (macOS) 中的字符串连接

javascript - 如何使用 javascript 在 <td> 中搜索字符串然后添加到该 id 中?

java - 使用 bouncycaSTLe 进行椭圆曲线加点

使用泛型参数的Java方法?

Java- JTextPane 中的 "Circular"选择?

c++ - luhn算法和C++中的 'digit manipulation'

java - 输入/比较字符串、返回数字、Java