使用java创建邻接列表时出现异常的异常
问题描述:
这里有什么问题? 我想与util列表,链表列表,使用utillist库邻接列表。但在运行代码后,它产生使用java创建邻接列表时出现异常的异常
异常线程 “main” java.lang.IndexOutOfBoundsException:指数:0,大小:0 在java.util.LinkedList.checkElementIndex(LinkedList.java:555)问题
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();
}
}
答
你的问题很可能连接到该打印方法:
void printGraph()
{
for(int i=0;i<G.length;i++)
System.out.println(i+"=>"+G[i].get(i)+"\n");
}
在该方法中你假设节点列表的G中的数量为比各节点列表的在G的长度相同或更小的
如果G [i]于节点列表会比我长度更短,则得到(i)会导致索引超出范围将被抛出。
与此处理的另一个打印选项可能是:
void printGraph()
{
for(int i=0;i<G.length;i++) {
for (Node node: G[i]) {
System.out.println(i+"=>"+node+"\n");
}
}
}
唯一的例外似乎是不完整的。你可否请其他人 - 如果有的话。 – blafasel
@blafasel我只有另一个类: class Edge { \t \t int v; \t \t public Edge(int v){ \t \t \t this.v = v; \t \t} \t \t} –
我对您的问题一个好的预感 - 我加了以下详细的解答。如果证明解决问题很有用,请点击旁边的灰色复选标记接受答案,使其变成绿色? – Assafs