gpt4 book ai didi

java - ArrayIndexOutOfBoundsException : 5 Not making any sense?

转载 作者:行者123 更新时间:2023-12-02 06:09:24 26 4
gpt4 key购买 nike

这是我的两个类(class):

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class TopoSort {

public static void main(String[] args) throws FileNotFoundException {

File textFile = new File("graphs.txt");
Scanner in = new Scanner(textFile);


int numGraphs = in.nextInt();
for(int i=0;i<1;i++)
{
int nodeNum = in.nextInt();
tsMakeGraph graph1 = new tsMakeGraph(nodeNum);

int[][] adjArray = new int[nodeNum][nodeNum];
for(int j=0;j<nodeNum;j++)
{

for(int k=0;k<nodeNum;k++)
{
adjArray[j][k] = in.nextInt();
}

for(int n=0;n<nodeNum;n++)
{
graph1.addNode(n);
}


}

for(int j=0;j<nodeNum;j++)
{
for(int k=0;k<nodeNum;k++)
{
if(adjArray[j][k] == 1)
{
graph1.makeEdge(j, k);
}
}
}

graph1.topologicalSort();

}
}
}

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

public class tsMakeGraph {

private Node nodeList[];
private int adjMatrix[][];
private int numNodes;
private int topoArray[];

public tsMakeGraph(int nodeNum) {
nodeList = new Node[nodeNum];
adjMatrix = new int[nodeNum][nodeNum];
numNodes = 0;
for (int i = 0; i < nodeNum; i++) {
for (int k = 0; k < nodeNum; k++) {
adjMatrix[i][k] = 0;
}
}
topoArray = new int[nodeNum];
}

public void addNode(int i) {
nodeList[numNodes++] = new Node(i);

}
}

当我通过 for 循环添加节点时,出现越界错误,但如果我通过绑定(bind) graph1.addNode(0)、graph1.addNode(2)、graph1.addNode(3 手动添加节点) ),graph1.addNode(numNodes),它会起作用。这对我来说没有意义,我一直在绞尽脑汁哈哈。顺便说一句,我编辑了大部分地形图类,因为这是一个硬件项目。

最佳答案

稍微缩短一下代码,你会得到这样的:

for(int j=0;j<nodeNum;j++)
{
for(int n=0;n<nodeNum;n++)
{
graph1.addNode(n);
}
}

public class tsMakeGraph {

public tsMakeGraph(int nodeNum) {
nodeList = new Node[nodeNum];
}

public void addNode(int i) {
nodeList[numNodes++] = new Node(i);
}
}

这里发生的情况是,您有一个包含 nodeNum 元素的数组,但您试图向其中添加 nodeNum^2 次。

我不知道告诉您“正确”解决方案的意图是什么。如果 nodeList 应具有与 adjMatrix 相同数量的元素,那么您应该像 new Node[nodeNum * nodeNum] 那样实例化它。 (与 topoArray 相同?)或者如果 nodeList 应包含整数 0...nodeNum-1 那么您应该将其从嵌套中拉出循环。

关于java - ArrayIndexOutOfBoundsException : 5 Not making any sense?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22026683/

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