これは私がちょうど見つけられない単純なものだと確信しています。プログラムの残りの部分で使用される配列サイズのユーザーを促すdo whileループがあります。ユーザーが右の入力を入力した場合、プログラムは続行され、正常に動作しますが、ユーザーは、このような「赤」、catchブロックとして間違って入力...Do-whileループはユーザー入力を待っていませんか?
public static void main(String[] args)
{
// user enters up to 20 double values, stored in an array, user should enter 99999 to quit entering numbers. If user has not entered any numbers yet
// display an error message, otherwise, display each entered value and it's distance from the average
Scanner keyboard = new Scanner(System.in);
int arraySize = 0;
boolean isValid = false;
do
{
isValid = true;
arraySize = 0; // reset these values at start of each loop.
System.out.println("Enter an array size.");
try {
arraySize = keyboard.nextInt();
}
catch(NegativeArraySizeException mistake) {
System.out.println("Do not enter a negative number for the arrays size.");
System.out.println();
isValid = false;
}
catch(InputMismatchException mistake) {
System.out.println("Make sure to enter a valid number.");
System.out.println();
isValid = false;
}
} while (isValid == false);
ユーザーが無効な入力を入力した場合に、入力した場合キックインして印刷します。「有効な番号を入力してください」配列サイズを入力してください。ユーザーに実際に入力を入力する機会を与えずに何度も繰り返します。私はarraySize変数をリセットするとそれを修正すると考えましたが、そうではありません。私は、キーボードのバッファーはそれにものを持っていると思うが、空のprintlnsの組み合わせはこれまで働いていない。
ユーザー入力の検証に例外を使用しないでください。何故ですか?
それにかかわらず、例外処理の練習であるので、この質問には関係ありません。
mmuzahidがほとんど存在してみてください。私は、入力値の否定性をチェックする方法を追加しました。チェックしてください –