Use a prompt module to get user input. The module should notify the user of his errors and reprompt. Yes, you have to provide a validation routine but it does not have to anything but return a boolean indicating whether or not the the entry is valid. "Valid" should mean not only that the data is in the correct format, but also that it is within a reasonable range. ActiveState::Promt is very easy to use on windows. Similiar capablities are available for other platforms.