プログラムで製品番号として使用するコンソールから、ゼロ以外の正の整数を入力するようにユーザーに依頼する必要があります。
整数以外の値を入力すると、プログラムは正しくwhileループに入ります。
0または負の整数を入力すると、プログラムは例外を正しくスローします(これは他の場所でキャッチして処理します)。
エンターキー(または行末文字)を押すだけで、プログラムがコンソールを別の行に移動したように見えます。エラーメッセージを表示するためにwhileループに入りたいです。hasNextInt()
原因は、トークンが行末文字の入力でなくなるまで待機することだと思います。
private static void validateProductNumber() throws InvalidProductNumberException {
Scanner keyboard = new Scanner(System.in);
int number;
while(!keyboard.hasNextInt()) {
System.out.println("Number must be an integer. Try again. ");
System.out.println("Enter a new number: ");
keyboard.next();
}
number = keyboard.nextInt();
if (number <= 0)
throw new InvalidProductNumberException();
newNumber = number;
}
Scannerクラスを使用して入力検証を実装し、すべての状況で正しく機能するようにする別の方法はありますか?