這裏是我的兩個類:ArrayIndexOutOfBoundsException:5沒有任何意義?
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);
}
}
我發現了一個出界失誤,當我通過添加節點的循環,但如果我通過手動添加搭售的節點out graph1.addNode(0),graph1.addNode(2),graph1.addNode(3),graph1.addNode(numNodes),它會工作。這對我沒有意義,我一直在絞盡腦汁哈哈。順便說一句,我編輯了我的大部分topo圖類,因爲這是一個硬件項目。
您從異常回溯在異常起源知道。在失敗操作之前添加System.out.println調用以轉儲數組索引和數組.length值。有些東西會讓你感到驚訝。 –
'for(int i = 0; i <1; i ++)'< - 這不會讓你走得太遠......複製/粘貼錯誤? – fge
我看不出有什麼明顯的錯誤。異常發生在哪一行?順便說一句,tsMakeGraph的構造函數中的每個元素都設置爲0的循環是不必要的;新的數字數組元素已經爲0. – Boann