public static void computePaths(Vertex source)
{
source.minDistance = 0.;
PriorityQueue<Vertex> vertexQueue = new PriorityQueue<Vertex>();
vertexQueue.add(source);
while (!vertexQueue.isEmpty())
{
Vertex u = vertexQueue.poll();
///////////////////////////////
// This is where the error is happening
///////////////////////////////
for (Edge e : u.adjacencies)
{
Vertex v = e.target;
double weight = e.weight;
double distanceThroughU = u.minDistance + weight;
if (distanceThroughU < v.minDistance)
{
vertexQueue.remove(v);
v.minDistance = distanceThroughU;
v.previous = u;
vertexQueue.add(v);
}
}
}
}
I'm getting the Runtime Error
Exception in thread "main" java.lang.NullPointerException
at Dijkstra.computePaths(Solution.java:69)
at Solution.main(Solution.java:141)
The program works fine with hard-coded vertices and paths, however the problem is going to be tested through file input, so I'm assuming it has to do with when I am taking in those values, but I can't find anything that would cause that error.
below is from where I take in the values
for (int i = 0; i < plans; i++)
{
vs[i] = new Vertex(scan.next());
destinations[i] = new Vertex(scan.next());
weights[i] = scan.nextInt();
scan.nextLine();
}
for (int i = 0; i < plans; i++)
{
vs[i].adjacencies = new Edge[]
{ new Edge(destinations[i], weights[i]) };
}
Vertex[] vertices = new Vertex[plans];
for (int i = 0; i < plans; i++)
{
vertices[i] = vs[i];
}
// starting vertice
String start = scan.next();
// ending vertice
String end = scan.next();
Dijkstra.computePaths(vs[0]);