コード ブロックは次のとおりです。
public static Vertex[] computeSubGraph(Vertex[] AdjList, int[] retiming)
{
Vertex[] subGraph = new Vertex[AdjList.length];
for (int i = 0; i < AdjList.length; i++) {
System.out.println(i);
subGraph[i].nodeDelay = AdjList[i].nodeDelay;
subGraph[i].predecessor = AdjList[i].predecessor;
subGraph[i].mark = AdjList[i].mark;
subGraph[i].starTime = AdjList[i].starTime;
subGraph[i].finishTime = AdjList[i].finishTime;
for (int j = 0; j < AdjList[i].inArcList.size(); j++) {
ArcNode old = AdjList[i].inArcList.get(j);
ArcNode newNode = new ArcNode(old.adjVex, old.arcWeight);
subGraph[i].outArcList.add(newNode);
subGraph[old.adjVex].inArcList.add(newNode);
}
}
return subGraph;
}
これは Vertex クラスです。
public class Vertex implements Comparable<Vertex> {
public int arcWeight;
public int preDelay;
public boolean infinite = true;
public int nodeDelay = 0;
public Vertex predecessor = null;
public ArcNode firstArc = null;
public int mark = 0;
public int starTime;
public int finishTime;
public ArrayList<ArcNode> inArcList = new ArrayList<ArcNode>();
public ArrayList<ArcNode> outArcList = new ArrayList<ArcNode>();
}
実際には、 AdjListの要素を新しい配列subgraphにコピーしたいだけです。しかし、エラーメッセージは「java.lang.NullPointerException」を示し、問題が「subGraph[i].nodeDelay = AdjList[i].nodeDelay;」にあることを示しています。ライン。
コンソールに出力してテストしました。AdjList.length が 8 で、最初のラウンドで問題が発生することがわかりました。そして、「subGraph[i].nodeDelay;」と書いただけでも 値を割り当てないと、間違ったメッセージも表示されます。これについて何か考えはありますか?前もって感謝します。