2016-03-02 64 views
1

所以我试图让一个程序找到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); 
     } 
    } 
} 

因为我使用边的包我使用的袋类(这哪里是add方法来自于): http://algs4.cs.princeton.edu/code/edu/princeton/cs/algs4/Bag.java.html

的问题是,每当我编译它,它说:“错误:变量V可能尚未初始化”的32行现在因为MyEdgeWeightedGraph方法调用插件方法在袋类中,它不需要返回语句,所以我怎么一直得到这个错误?

回答

0

在你的构造函数,当你写

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

你正在创建一个名为EV局部变量阴影领域EV。因此,在构造函数完成运行后,您声明为finalEV的值尚未初始化,因此为错误。

为了解决这个问题,删除类型和只写

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

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

相关问题