Привет всем, я получаю сообщение об ошибке всякий раз, когда пытаюсь создать простое ребро из узла.По сути, я создал два моих собственных класса с именами Node и Edge.
Класс 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;
}
}
В моем основном классе я создаю два узла, а именно, начальный и конечный узлы.Стоимость и номер порта (номер порта, на котором слушают оба эти узла), я читаю из текстового файла и сохраняю их в список массивов с именами "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*)
}
Я понимаю, что это исключение нулевого указателя, поэтому где-то в этом цикле я должен делатьчто-то не так?Может ли кто-нибудь помочь мне разобраться или дать несколько советов?
Очень ценится.