Blast! I took too much time and ra4king basically covered what I did, just using more basic terms. xD
First: Recursion is bad unless you have a reason for doing it, and I don't think you really do. What this means, is that it's a bad habit to have a method call another method that will call first. Especially if you have no way for them to break out of it (Not sure if you do, since reStart isn't displayed). In this case, you'll end up having a stack overflow in no time. My advice? If Restart is mainly performing logic that has to occur every time step, place it inside of some sort of loop instead, and include the call to start in your loop.
Second: Error line numbers aren't very helpful if we don't have the source/correct line numbers to match them up to. In this case, it's line being given the an older edition of a book, then being given page numbers from the new, expanded book. We can sort of figure it out to a point, but it's difficult.
Third: Lots of statics calls. To things that seem to be objects (Room1, which has a field room1, and UserInput). This is more of a pet peeve of mine than anything else.
Ah, to recap: Try to take care of the recursion problem, it could be a big part of your troubles, or it could be obscuring what the real problem is. If the error is popping up in code we don't have, paste those chunks and mark which are causing the problems in the stack trace.