I've written the below code to validate user input but I feel it's quite excessive for what seems to be a simple operation. I want to only accept non-negative integers or doubles as an input. This block of code is required three times in my program so I will need to put it into a method or something but in the mean time is there a simpler way to validate user input?
Scanner input = new Scanner(System.in);
boolean validWidth = false;
double width = 0.0;;
do // do while runs until the input is validated
{
System.out.print("Enter width: ");
if (input.hasNextInt()) // we accept an int
{
width = input.nextInt();
if (width > 0) // we accept a non-negative
{
validWidth = true;
}
else // refuse a negative
{
System.out.println("Input error. Try again.");
validWidth = false;
}
}
else if (input.hasNextDouble())// accept a double
{
width = input.nextDouble();
if (width > 0) // we accept a non-negative
{
validWidth = true;
}
else // and refuse a negative
{
System.out.println("Input error. Try again.");
validWidth = false;
}
}
else
{
System.out.println("Input error. Try again.");
validInput = false;
input.next();
}
} while (!(validWidth));
input
's type, how it's initialized, and the declarations of the other variables. Keep in mind that It's fine to drop a lot of code here, as long as you properly explain it beforehand. \$\endgroup\$