A method that gets a valid numberic format
*******************************************************
public static double getDouble(Scanner sc, String prompt)
{
double d = 0.0;
boolean isValid = false;
while (isValid == false)
{
System.out.print(prompt);
if (sc.hasNextDouble())
{
d = sc.nextDouble();
isValid = true;
}
else
{
System.out.println("Error! Invalid number. Try again");
}
sc.nextLine() // discard any other data entered on the line
}
return d;
}
*******************************************************
A method that checks for a valid numeric range
*******************************************************
public static double getDoubleWithinRange(Scanner sc, String prompt, double min, double max)
{
double d = 0.0;
boolean isValid = false;
while (isValid == false)
{
d = getDouble(sc, prompt); // call the getDouble method
if (d <= min)
{
System.out.println("Error! Number must be greater than" + min + ".");
}
else if (d >= max)
{
System.out.println("Error! Number must be less than " + max ".");
}
else
isValid = true;
}
return d;
}
*******************************************************
Code that uses these methods to return two valid double values
*******************************************************
Scanner sc = new Scanner(System.in);
double subtotal1 = getDouble(sc, "Enter subtotal: ");
double subtotal2 = getDoubleWithinRange(sc, "Enter subtotal: ", 0, 10000);
*******************************************************
Note:***
Because most applications need to check more than
one type of entry for validity , it often make sense to create and use generic methods for data validation.