At my school, we are using the BufferedReader for keyboard input for our console apps and I don't want to have to write ways to validate input for every project so I am writing a class to validate user input. I have only written the validation methods for ints and want feedback before I do so for doubles, etc.
I want to make the class dynamic and allow the user to use their own BufferedReader if they want to and specify a range if they want.
package ValidateInput;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ValidateInput {
public static int getInt() {
BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));
String errorMessage = "Please enter a valid integer: ";
boolean invalid = true;
int output = 0;
do {
try {
//Get input from keyboard buffer and attempt to parse to an int.
output = Integer.parseInt(in.readLine());
//Only executes boolean assignment if an exception isn't thrown.
invalid = false;
} catch(NumberFormatException e) {
//If it is not a valid int print error message.
System.out.print(errorMessage);
} catch(IOException e) {
e.printStackTrace();
}
} while(invalid);
return output;
}//End of validateInt method.
public static int getInt(BufferedReader in) {
String errorMessage = "Please enter a valid integer: ";
boolean invalid = true;
int output = 0;
do {
try {
output = Integer.parseInt(in.readLine());
invalid = false;
} catch(NumberFormatException e) {
System.out.print(errorMessage);
} catch(IOException e) {
e.printStackTrace();
}
} while(invalid);
return output;
}//End of validateInt method.
public static int getInt(int value) {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String errorMessage = "Please enter the integer value " + value + ": ";
boolean invalid = true;
int output = 0;
do {
try {
output = Integer.parseInt(in.readLine());
//If the input is a valid int, check if it matches the value specified.
if(output != value) {
System.out.print(errorMessage);
} else {
invalid = false;
}
} catch(NumberFormatException e) {
System.out.print(errorMessage);
} catch(IOException e) {
e.printStackTrace();
}
} while(invalid);
return output;
}//End of getInt method.
public static int getInt(int value, BufferedReader in) {
String errorMessage = "Please enter the integer value " + value + ": ";
boolean invalid = true;
int output = 0;
do {
try {
output = Integer.parseInt(in.readLine());
if(output != value) {
System.out.print(errorMessage);
} else {
invalid = false;
}
} catch(NumberFormatException e) {
System.out.print(errorMessage);
} catch(IOException e) {
e.printStackTrace();
}
} while(invalid);
return output;
}//End of getInt method.
public static int getInt(int startRange, int endRange) {
//If the startRange is greater than the end range swap the values.
if(startRange > endRange) {
int temp = endRange;
endRange = startRange;
startRange = temp;
}
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String errorMessage = "Please enter a valid integer between " + startRange + " and " + endRange +": ";
boolean invalid = true;
int output = 0;
do {
try {
output = Integer.parseInt(in.readLine());
//If the input is a valid int, check to see if it is in range.
if(output < startRange || output > endRange) {
System.out.print(errorMessage);
} else {
invalid = false;
}
} catch(NumberFormatException e) {
System.out.print(errorMessage);
} catch(IOException e) {
e.printStackTrace();
}
} while(invalid);
return output;
}//End of validateInt method.
public static int getInt(int startRange, int endRange, BufferedReader in) {
if(startRange > endRange) {
int temp = endRange;
endRange = startRange;
startRange = temp;
}
String errorMessage = "Please enter a valid integer between " + startRange + " and " + endRange +": ";
boolean invalid = true;
int output = 0;
do {
try {
output = Integer.parseInt(in.readLine());
if(output < startRange || output > endRange) {
System.out.print(errorMessage);
} else {
invalid = false;
}
} catch(NumberFormatException e) {
System.out.print(errorMessage);
} catch(IOException e) {
e.printStackTrace();
}
} while(invalid);
return output;
}//End of validateInt method.
}//End of class.