I'm not sure what you mean by where is the Scanner after each method is called.
The scanner works with a stream of characters (characters you can see, and characters like spaces and newlines). Every time you call nextWhatever() something is returned and the position of the scanner within the stream is updated
. The documentation is very explicit (but maybe not clear...) about where in the stream each call to nextXXX() leaves the scanner.
And this makes a big difference. Your "address = keyboard.nextLine();" will do exactly what it is documented to do: including possibly returning an empty string straight away. Nothing in the documentation says it must wait if there is already a new line in the stream.