import java.util.Scanner;
public class Prompt {
final private static String DEFAULT_INT_PROMPT = "Please enter an integer";
public static int integer( String prompt ) {
Scanner user_input = new Scanner(System.in);
int number;
boolean validInput;
do {
System.out.print(prompt + ": ");
try {
number = Integer.parseInt(user_input.next());
validInput = true;
} catch (NumberFormatException e) {
number = 0;
System.out.print("Input wasn't an integer. ");
validInput = false;
}
} while (!validInput);
return number;
}
public static int integer() {
return integer(DEFAULT_INT_PROMPT);
}
public static int intGreaterThan( String prompt, int min, String error ) {
Scanner user_input = new Scanner(System.in);
int number;
do {
if (min == Integer.MIN_VALUE) {
System.out.print(prompt + ": ");
}
else {
System.out.print(prompt + " (greater than " + min + "): ");
}
try {
number = Integer.parseInt(user_input.next());
if (number < min)
{
System.out.print(error + " ");
}
} catch (NumberFormatException e) {
number = min - 1;
System.out.print("Input wasn't an integer. ");
}
} while (number < min);
return number;
}
public static int intGreaterThan( int min, String error ) {
return intGreaterThan(DEFAULT_INT_PROMPT, min, error);
}
public static int intGreaterThan( int min ) {
return intGreaterThan(min, "Input out of range.");
}
public static int wholeNumber( String error ) {
return intGreaterThan(0, error);
}
public static int wholeNumber() {
return wholeNumber("That's a negative number.");
}
public static int postiveInt( String error ) {
return intGreaterThan(1, error);
}
public static int postiveInt() {
return postiveInt("That's a negative number.");
}
public static int intLessThan( String prompt, int max, String error ) {
Scanner user_input = new Scanner(System.in);
int number;
do {
if (max == Integer.MAX_VALUE) {
System.out.print(prompt + ": ");
}
else {
System.out.print(prompt + " (less than " + max + "): ");
}
try {
number = Integer.parseInt(user_input.next());
if (number > max)
{
System.out.print(error + " ");
}
} catch (NumberFormatException e) {
number = max + 1;
System.out.print("Input wasn't an integer. ");
}
} while (number > max);
return number;
}
public static int intLessThan( int max, String error ) {
return intLessThan(DEFAULT_INT_PROMPT, max, error);
}
public static int intLessThan( int max ) {
return intLessThan(max, "Input out of range.");
}
public static int intInRange( String prompt, int min, int max, String minError,
String maxError ) {
Scanner user_input = new Scanner(System.in);
int number;
do {
if (min == Integer.MIN_VALUE && max == Integer.MAX_VALUE) {
number = integer(prompt);
}
else if (min == Integer.MIN_VALUE) {
number = intLessThan(prompt, max, maxError);
}
else if (max == Integer.MAX_VALUE) {
number = intGreaterThan(prompt, min, minError);
}
else {
System.out.print(prompt + " (between " + min + " and " + max + "): ");
}
try {
number = Integer.parseInt(user_input.next());
if (number < min) {
System.out.print(minError + " ");
}
else if (number > max) {
System.out.print(maxError + " ");
}
} catch (NumberFormatException e) {
number = min - 1;
System.out.print("Input wasn't an integer. ");
}
} while (number < min || number > max);
return number;
}
public static int intInRange( int min, int max, String minError, String maxError ) {
return intInRange(DEFAULT_INT_PROMPT, min, max, minError, maxError);
}
public static int intInRange( int min, int max, String error ) {
return intInRange(min, max, error, error);
}
public static int intInRange( int min, int max ) {
return intInRange(min, max, "Input out of range.");
}
}
Comments