このコードで私が抱えている問題は次のとおりです。変数番号を文字列にすることはできないため、try、catch (InputMissmatchException) ステートメントを使用して問題を処理しようとしました。ただし、ループに入って誰かが文字列に入ると、例外はハンドルされますが、最後の有効なエントリを使用して再びループを通過します。つまり、5 を入力してから「hello」と入力すると、「番号を入力する必要があります」という結果になります。しかし、ここで再び 5 がカウントされます。
これにより、カウンターはカウント変数に 1 を追加しすぎます。また、ユーザーが文字列を使用し続けると、ループは最後の有効なエントリを何度も追加し続けるため、最後にカウントが正しくなくなります。
論理的に言えば、プログラムで問題を処理し、while ループを再度実行せずに、許容可能な整数が入力されるまで、ユーザーに正しいエントリを入力するように求めます。ユーザーが有効なエントリを入力すると、ループを継続するか存在します (-1)。
int number = 0;
int[] count = new int[11];
try
{
number = input.nextInt();
}
catch (InputMismatchException y)
{
System.out.println("You must enter a number.");
input.nextLine();
}
while (number != -1)
{
try
{
++count[number];
}
catch (IndexOutOfBoundsException e)
{
System.out.println("Please enter a valid number from the menu.");
}
try
{
number = input.nextInt();
}
catch (InputMismatchException y)
{
System.out.println("You must enter a number.");
input.nextLine();
}
}