2017-09-23 5 views
2

ここで問題は何ですか? リスト、リンクリストなどのutilライブラリで隣接リストを作成しようとしています。ランキング:0、サイズ:0 java.util.LinkedList.checkElementIndexで(LinkedList.java:555)問題Javaで隣接関係リストを作成する際に例外を超えました

しかし、コードを実行した後には、スレッド "メイン" java.lang.IndexOutOfBoundsExceptionで

例外を生成しています

import java.util.*; 
class GraphMain{ 

    List<Edge> G[]; 
    public GraphMain(int n) { 
     G=new LinkedList[n]; 
     for(int i=0;i<G.length;i++) 
      G[i]=new LinkedList<Edge>(); 
    } 
    boolean isConnected(int u,int v) { 
     for(Edge i: G[u]) 
      if(i.v==v) return true; 
     return false; 
    } 
    void addEdge(int u,int v) { 
     G[u].add(new Edge(v)); 
    } 

    void printGraph() { 
     for(int i=0;i<G.length;i++) 
     System.out.println(i+"=>"+G[i].get(i)+"\n"); 
    } 
} 

私のテスタークラスは次のとおりです。

public class Graph { 
    public static void main(String[] args) { 
     GraphMain g=new GraphMain(10); 
     g.addEdge(1, 2); 
     g.addEdge(2, 5); 
     g.addEdge(2, 5); 
     g.addEdge(8, 3); 

     g.printGraph(); 
    } 
} 
+1

例外が不完全であると思われます。もしあれば残りを見せてください。 – blafasel

+0

@blafasel私は別のクラスしか持っていません: クラスエッジ{ \t \t int v; \t \t public Edge(int v){ \t \t \t this.v = v; \t \t \t \t –

+0

私はあなたの問題についてよく察知しています。私は以下の詳細な回答を追加しました。あなたの問題を解決することが有用であると判明した場合は、その横にあるグレーのチェックマークをクリックして回答を受け入れてください。 – Assafs

答えて

1

あなたの問題が最も可能性が高い。この印刷方法に接続されている:

void printGraph() 
{ 
    for(int i=0;i<G.length;i++) 
    System.out.println(i+"=>"+G[i].get(i)+"\n"); 
} 

Gのノードリストの数がGの各ノードリストの長さと同じかそれよりも小さいと仮定します。

G [i]ノードリストがiの長さよりも短い場合、get (i)インデックス外にインデックスがスローされます。この扱っ

別の印刷オプションは次のようになります。

void printGraph() 
{ 
    for(int i=0;i<G.length;i++) { 
     for (Node node: G[i]) { 
      System.out.println(i+"=>"+node+"\n"); 
     } 
    } 
} 
+0

それは素晴らしいです。 それは私の問題を解決しました。 –

+0

@AmitBiswas、Cool。答えを受け入れてください。灰色のチェックマークをクリックすると緑色に変わります。 – Assafs

+1

もちろん。どうもありがとう –

関連する問題