J'essaie de résoudre un labyrinthe par DFS, en utilisant adj List pour représenter les sommets et les arêtes du graphique. Au total, il y a 12 nœuds (3 lignes [A, B, C] * 4 cols [0, .., 3]). Mon programme commence par sauvegarder toutes les étiquettes de vertex (A0, .. C3), jusqu'ici tout va bien, puis vérifie les nœuds adjacents, aussi aucun problème, si le mouvement est possible, il continue à créer le bord, ici c'est où tout va mal .ArrayList <String> NullPointerException
adjList[i].add(vList[j].label);
I utilisé le débogueur et a constaté que vList[j].label
est non nulle, il contient une chaîne correcte (ie. "B1"). Les seules variables qui montrent null sont dans adjList[i]
, ce qui me porte à croire que je l'ai mis en œuvre à tort. C'est comme ça que je l'ai fait.
public class GraphList {
private ArrayList<String>[] adjList;
...
public GraphList(int vertexcount) {
adjList = (ArrayList<String>[]) new ArrayList[vertexCount];
...
}
...
public void addEdge(int i, int j) {
adjList[i].add(vList[j].label); //NULLPOINTEREXCEPTION HERE
}
...
}
Je vais vraiment apprécier si quelqu'un peut me pointer sur la bonne voie pour ce qui va mal ... Merci!
Ce que vous devez faire est de changer le code pour avoir une instruction par ligne. adjList [i] .add (vList [j] .label); devrait être ArrayList alTmp = adjList [i]; WhateverType vTmp = vList [j]; Chaîne label = vTmp.label; alTmp.add (étiquette); Et puis voir où vous rencontrez le problème avec le débogueur –