gpt4 book ai didi

java - 变量可能尚未初始化(边缘加权图)

转载 作者:太空宇宙 更新时间:2023-11-04 12:51:46 25 4
gpt4 key购买 nike

所以我正在尝试编写一个程序来查找 MST。为了构建图表,我使用了一袋边,并使用以下代码从文件中读取图表:

import edu.princeton.cs.algs4.*;

class MyEdgeWeightedGraph {
private final int V;
private final int E;
private Bag<MyEdge> edges;

public int V() {
return V;
}
public int E() {
return E;
}

public Iterable<MyEdge> edges() {
return edges;
}

public MyEdgeWeightedGraph(In in) {
int E = in.readInt();
int V = in.readInt();
if (E < 0) {
throw new IllegalArgumentException("Number of edges must be nonnegative");
}
for (int i = 0; i < E; i++){
int v = in.readInt();
int w = in.readInt();
long weight = in.readLong();
MyEdge e = new MyEdge(v, w, weight);
edges.add(e);
}
}
}

因为我正在使用一袋边缘,所以我正在使用 bag 类(这是 add 方法的来源): http://algs4.cs.princeton.edu/code/edu/princeton/cs/algs4/Bag.java.html

问题是,每当我编译它时,它都会在第 32 行显示“错误:变量 V 可能尚未初始化”。现在因为 MyEdgeWeightedGraph 方法调用 bag 类中的 add 方法,所以它不需要 return 语句,所以为什么我不断收到此错误?

最佳答案

在你的构造函数中,当你编写时

    int E = in.readInt();
int V = in.readInt();

您正在创建名为 EV 的局部变量,它们遮蔽字段 EV。因此,构造函数运行完成后,声明为 finalEV 的值尚未初始化,因此出现错误。

要解决此问题,请删除类型并编写

    E = in.readInt();
V = in.readInt();

这应该可以解决您的问题。

关于java - 变量可能尚未初始化(边缘加权图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35759718/

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