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

Java加权图类实现报错:构造方法中nodes.add(a)触发空指针异常

解决加权图构造方法中的NullPointerException问题

嘿,我来帮你搞定这个烦人的空指针异常!咱们先揪出问题根源,再一步步把它修好。

问题根源

你在WGraph类里声明了public ArrayList<Node> nodes;,但完全没有给这个ArrayList创建实例对象。当构造方法里调用nodes.add(a)时,nodes还是个null,Java自然会抛出NullPointerException。

另外,你的Node类还有个潜在的坑:public ArrayList<Edges> connections;同样没初始化,要是后面你想给节点添加边,调用connections.add(...)时也会触发空指针,咱们一起把它解决掉。

具体修复方案

1. 初始化WGraph中的nodes集合

有两种简单方式可选:

  • 方式一:在构造方法里初始化
    修改WGraph的构造方法,先实例化nodes再添加元素:
    public class WGraph { 
        public ArrayList<Node> nodes; 
        public WGraph(int n) { 
            nodes = new ArrayList<>(); // 关键:先创建ArrayList实例
            int i; 
            for(i=0; i<=n; i++) { 
                Node a = new Node(i); 
                nodes.add(a); 
            } 
        } 
    }
    
  • 方式二:声明时直接初始化
    也可以在定义nodes的时候就完成实例化,这样构造方法里不用额外写初始化代码:
    public class WGraph { 
        public ArrayList<Node> nodes = new ArrayList<>(); // 声明时直接初始化
        public WGraph(int n) { 
            int i; 
            for(i=0; i<=n; i++) { 
                Node a = new Node(i); 
                nodes.add(a); 
            } 
        } 
    }
    

2. 修复Node类的connections集合

在Node的构造方法里初始化connections,避免后续操作触发空指针:

public class Node { 
    public int key; 
    public ArrayList<Edges> connections; 
    public Node(int key) { 
        this.key = key; 
        connections = new ArrayList<>(); // 初始化connections集合
    } 
}

这样修改之后,你的加权图类就能正常创建节点,再也不会抛出空指针异常啦!

内容的提问来源于stack exchange,提问作者PedroGonçalves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:26:42