gpt4 book ai didi

Java - 优先级队列显示 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 07:35:10 26 4
gpt4 key购买 nike

我在主类中有一个名为Prims的类和该类类型的优先级队列。在我使用其构造创建该类的实例后,我想将该对象插入队列中.编译得很好,但它显示运行时错误 NullPointerException 。这是代码:

package mst.prims;

import java.util.*;

public class Main {

/**
* Minimum Spanning Tree - Prim's Algorithm
* @author Kaidul
*/
static final int MAX = 100;

static class Prims{
int u, v, cost;
Prims(int u, int v, int cost){
this.u = u;
this.v = v;
this.cost = cost;
}
}

static PriorityQueue<Prims> q, q1, q2 = new PriorityQueue<Prims>(MAX);

public static void main(String[] args) {


Scanner input = new Scanner(System.in);

for (int i = 0; i < 7; i++) {
int u, v, cost;
u = input.nextInt();
v = input.nextInt();
cost = input.nextInt();
Prims temp = new Prims(u, v, cost);

q.add(temp);
}
}

}

错误:

1 2
2 3
Exception in thread "main" java.lang.NullPointerException
at mst.prims.Main.main(Main.java:36)

我是 Java 新手,无法修复它。

最佳答案

它不应该给出NullPointerException,而应该给出ClassCastException。因为您的类 Prims 没有实现 Comparable 接口(interface),因此无法推送到 Priority Queue 中。

您需要实现Comparable并在嵌套Prims类中提供compareTo方法

请为您的变量使用有意义的名称。 uv 对我来说似乎很模糊,没有描述它们所代表的含义。

关于Java - 优先级队列显示 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13062237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com