私の検証方法では、ユーザーが10進数の代わりに文字を入力した場合にエラーメッセージを出力したいのですが、このメソッドはコンソールにエラーメッセージを出力することを正確に行いますが、たとえば「dfdff」と入力した場合は2回出力します小数点の代わりに、
「エラー、無効な数値です。再試行してください」と表示されます。
「エラー、無効な番号です。再試行してください」
ユーザーが間違った値を入力するたびにエラーメッセージを出力するにはどうすればよいですか???
public static double getVaildSubtotal(Scanner sc)
{
double subtotal = 0.0;
boolean isValid = false;
while (isValid == false)
{
if (sc.hasNextDouble())
{
subtotal = sc.nextDouble();
isValid = true;
}
else
{
System.out.println("Error! Invalid decimal value. Try again.");
}
sc.nextLine();
if (isValid == true && subtotal <= 0)
{
System.out.println("Error! Number must be greater then 0.");
isValid = false;
}
else if (isValid == true && subtotal >= 10000)
{
System.out.println("Error! Number must be less then 10000.");
isValid = false;
}
}
return subtotal;
}