2016-03-02 67 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(); 

這應該可以解決您的問題。

相關問題