Note that there are some explanatory texts on larger screens.

plurals
  1. PONullPointerException Java BFS
    primarykey
    data
    text
    <p>I am trying to perform a Breath First Search on a graph that I am creating from an adjacency list from a text file "Input.txt" I am getting a NullPointerException on line 162 where it says "root.visited = true;" I cannot figure out why this is. Here is what code i have.</p> <pre><code> import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.Queue; import java.util.Stack; public class BFS { public static void main(String[] args) { { Graph g = new Graph(); // Making Adjacency Matrix ArrayList&lt;ArrayList&lt;Integer&gt;&gt; adjacency = new ArrayList&lt;ArrayList&lt;Integer&gt;&gt;(); adjacency.add(new ArrayList&lt;Integer&gt;()); String input = "input.txt"; Graph MyGraph = new Graph(); boolean root = true; Vertex n = null; int j = 0; try { // Reading in the Input File to the Adjacency Matrix BufferedReader reader = new BufferedReader( new FileReader(input)); String line = reader.readLine(); while (line != null) { // Getting numbers from each line String[] numbers = line.split(","); int[] values = new int[numbers.length]; for (int i = 0; i &lt; numbers.length; i++) values[i] += Integer.parseInt(numbers[i]); // Adding values to Matrix for (int i = 0; i &lt; values.length; i++) { adjacency.get(j).add(values[i]); System.out.print(" " + adjacency.get(j).get(i)); // output // of // matrix } System.out.print("\n"); // Progressing through file adjacency.add(new ArrayList&lt;Integer&gt;()); line = reader.readLine(); j++; } // read each line for (int currRow = 0; (line = reader.readLine()) != null; currRow++) { String[] row = line.split(","); // insert vertices if (currRow == 0) { for (int i = 0; i &lt; row.length; i++) { g.addVertex(n); if (root = true) { } } } // create the edges specified in this row for (int i = 0; i &lt; row.length; i++) { // edge exists between indices 'currRow' and col 'i'. if (Integer.parseInt(row[i]) == 1) { g.connectVertex(currRow, i); } } } reader.close(); } catch (FileNotFoundException e) { System.out.println(e); } catch (IOException e) { System.out.println(e); } /* DFS Algorithm */ // schtuff (use stack? use index of node for unique number?) // System.out.print("Visited nodes (in order): "); } // catch exceptions &amp; errors Graph MyGraph = new Graph(); MyGraph.dfs(); } public static class Graph { public Vertex root; public ArrayList&lt;Vertex&gt; vertices = new ArrayList&lt;Vertex&gt;(); public ArrayList&lt;Vertex&gt; dfsArrList = new ArrayList&lt;Vertex&gt;(); public int[][] adjMatrix; int size; public void setRootVertex(Vertex n) { this.root = n; } public Vertex getRootVertex() { return this.root; } public void addVertex(Vertex n) { vertices.add(n); } public void removeVertex(int loc) { vertices.remove(loc); } public void connectVertex(int vertexStart, int vertexEnd) { if (adjMatrix == null) { size = vertices.size(); adjMatrix = new int[size][size]; } int startIndex = vertices.indexOf(vertexStart) + 1; int endIndex = vertices.indexOf(vertexEnd) + 1; adjMatrix[startIndex][endIndex] = 1; adjMatrix[endIndex][startIndex] = 1; } public void removeEdge(Vertex v1, Vertex v2) { int startIndex = vertices.indexOf(v1); int endIndex = vertices.indexOf(v2); adjMatrix[startIndex][endIndex] = 1; adjMatrix[endIndex][startIndex] = 1; } public int countVertices() { int ver = vertices.size(); return ver; } private Vertex getUnvisitedChildNode(Vertex n) { int index = vertices.indexOf(n); int j = 0; while (j &lt; size) { if (adjMatrix[index][j] == 1 &amp;&amp; vertices.get(j).visited == false) { return vertices.get(j); } j++; } return null; } public Iterator&lt;Vertex&gt; dfs() { Stack&lt;Vertex&gt; s = new Stack&lt;Vertex&gt;(); s.push(this.root); root.visited = true; printVertex(root); while (!s.isEmpty()) { Vertex n = s.peek(); Vertex child = getUnvisitedChildNode(n); if (child != null) { child.visited = true; dfsArrList.add(child); s.push(child); } else { s.pop(); } } clearVertices(); return dfsArrList.iterator(); } private void clearVertices() { int i = 0; while (i &lt; size) { Vertex n = vertices.get(i); n.visited = false; i++; } } private void printVertex(Vertex n) { System.out.print(n.vertexName + " "); } } public class Vertex { public char vertexName; public boolean visited = false; public Vertex(char l) { this.vertexName = l; } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload