ノードから単純なエッジを作成しようとすると、エラーが発生します。基本的に、Node と Edge という 2 つの独自のクラスを作成しました。
Node クラスは次のとおりです。
public class Node {
public String ident;
public int numLinks;
public Edge[] neighbours;
public Node (String ident) {
this.ident = ident;
}
public void setNeighbour (Node start, Node end, int cost, int portNum) {
}
}
私の Edge クラスは次のとおりです。
public class Edge {
Node start;
Node end;
int cost;
int portNum;
public Edge (Node a, Node b, int cost, int portNum) {
this.start = a;
this.end = b;
this.cost = cost;
this.portNum = portNum;
}
}
私のメイン クラスでは、開始ノードと終了ノードという 2 つのノードを作成します。コストとポート番号 (両方のノードがリッスンするポート番号) をテキスト ファイルから読み取り、"linkCostList" と "portNumList" という名前の配列リストに保存しています。
ここで、各開始ノードは複数のエッジを持つことができるため (私は基本的にグラフを作成しています)、次の方法で setNeighbour() メソッドを呼び出しています。
for (int i = 0; i < startNode.numLinks; i++) {
nextNode = new Node (String name of node I read from text file)
startNode.setNeighbour (startNode, nextNode, linkCostList.get(i), portNumList.get(i));
}
私の setNeighbour メソッドは次のとおりです。
public void setNeighbour (Node start, Node end, int cost, int portNum) {
for (int i = 0; i < start.numLinks; i++) {
neighbours[i] = new Edge (start, end, cost, portNum);
}
}
コンパイルするたびに、次のようなエラーが発生します。
Exception in thread "main" java.lang.NullPointerException
at Node.setNeighbour(Node.java: *line number*)
at Start.startlsr(Start.java: *line number*)
at graph.main(lsr.java: *line number*)
}
これは null ポインターの例外であることは理解しています。そのため、そのループのどこかで、何か間違ったことをしているに違いありません。誰でも私がそれを理解するのを手伝ってもらえますか?