gpt4 book ai didi

java - 使用java创建邻接表时出现越界异常

转载 作者:行者123 更新时间:2023-11-30 10:25:07 25 4
gpt4 key购买 nike

这里有什么问题?我正在尝试使用 util 库制作邻接列表,如列表、链表。但是在运行它生成的代码之后

线程“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 长度短,get(i) 将导致索引越界将被抛出。

处理此问题的另一个打印输出选项可能是:

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

关于java - 使用java创建邻接表时出现越界异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46382733/

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