I can't help but feel that has gone way over the top for the original spec/scope. Even without error handling its 242 lines, many of which just cover perfectly good System.out methods, but even so miss out on others that overload for all the primitive types. I think it's a mistake to try to replace System.out... why bother? It's the only class and method that everyone has already encountered in their first "hello world" program.
Here's my take - apart from the file input thing (see use case in previous post), it just does what the spec asks - user input as bullet proof as possible and if not, fails well. Easy to use, and complete with JavaDoc
(I wouldn't normally post a lot of code while discussion is still going on, but I'm away from my desk for 8 days from tomorrow, so this is my last chance.)
/**
* This is an API utility for novice Java students to get simple user input in their programs.
* <br> Each "get" method takes a String that is output to System.out as a prompt to the user.
* <br> User input is parsed as tolerantly as possible. Invalid input is rejected and re-tried.
* <br> After three consecutive failed trys a runtime exception is thrown.
* <br> An alternative constructor allows input to be taken from a test data file.
*
* @author DaniWeb members
*/
public class UserInput {
/**
* Just some test/demo code for this class …