Hey!
I took me a while but with a little help from my compiler I finally spotted your error.
int numRows, numCols, row, col;
String charInputs;
String[][]maze; // RIGHT HERE!!!!
final String p, f, l, r, d, u, move;
public Maze()
{
row = 0;
col = 0;
charInputs = "";
move = "";
d = "D";
l = "L";
r = "R";
u = "U";
p = "P";
f = "F";
String[][]maze = { {p, p, p, f}, {f, f, p, f},{f, f, p, f},{f, f, p, p} }; // AND HERE!!!
}
The first error I found was In this block of code. It has to do with variable scope. This string array is recognized by the compiler from the line it is declared on until the end of the code block in which it was declared. The problem is that you have a nested code block where you re-declare the same string array and initialize it. That second declaration isn't accessible outside of the code block in which it was defined, which is inside the Maze constructor. So when you try to use the maze.length method, the compiler tells you that you are trying to access a null value… NullPointerException. To fix it you would have to change the declaration of the first String array to this
String[][] maze = new String[/*some number*/][/*some number*/];
This isn't where the troubles end however, I suspect that the Second declaration of maze creates an entirely different object. So when you try and access the elements in maze you are actually accessing the elements of the first maze object, which are null, so you continue to get a NullPointerException thrown.
That's all I've been able to understand so far, I might continue to look into it if I get the time.
Good luck with what I've told you so far.