You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用类统计数组元素频率触发NullPointerException的原因及解决方法

问题分析与解决方案

错误原因

你创建的Count[] arr = new Count[101]只是初始化了一个能容纳101个Count对象的数组容器,但数组里的每一个位置默认都是null——并没有实际创建Count类的实例。当你输入元素后执行arr[value].count += 1时,arr[value]还是null,自然没法读取它的count字段,直接抛出了空指针异常。

解决方案

方案一:初始化数组时创建所有Count实例

在声明数组后,先遍历数组,给每个位置都创建一个Count对象,确保后续访问时不会出现null:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner lta = new Scanner(System.in);
        Count[] arr = new Count[101];
        // 提前初始化数组中每个位置的Count实例
        for (int i = 0; i < arr.length; i++) {
            arr[i] = new Count();
            arr[i].value = i; // 可选:让value对应数组下标,和统计的元素值一致
        }
        System.out.println("Enter the elements :");
        for (int i = 0;i < 10;i++){
            int value = lta.nextInt();
            arr[value].count += 1;
        }
        System.out.println("Frequency of the elements in the array :");
        for (int i = 1;i < arr.length;i++){
            if (arr[i].count > 0){
                System.out.println(i + " : " + arr[i].count);
            }
        }
    }
    static class Count{
        long value;
        long count;
    }
}

方案二:用HashMap统计(更灵活)

如果输入元素的范围不确定,用HashMap统计频率更合适,无需提前固定容器大小:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner lta = new Scanner(System.in);
        Map<Integer, Integer> frequencyMap = new HashMap<>();
        System.out.println("Enter the elements :");
        for (int i = 0; i < 10; i++) {
            int value = lta.nextInt();
            // 存在则计数加1,不存在则初始化为1
            frequencyMap.put(value, frequencyMap.getOrDefault(value, 0) + 1);
        }
        System.out.println("Frequency of the elements in the array :");
        // 遍历输出结果,若需要按顺序输出可替换为TreeMap
        for (Map.Entry<Integer, Integer> entry : frequencyMap.entrySet()) {
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }
    }
}

内容的提问来源于stack exchange,提问作者Samik Pandit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:17:11