Scanner を使用して、ユーザーから数値を取得し、それが 1 から 100 までの整数の場合は「a」に保存するプログラムを作成しました。以下の Java ファイルを参照してください。
public class Parity_Check {
private static Scanner sc;
public static void main(String[] args) throws InterruptedException {
sc = new Scanner(System.in);
int a, b;
System.out.print("Enter a number between 1 and 100: ");
while(true) {
b = 0;
if(!sc.hasNextInt()) {
System.out.print("That isn't an integer! Try again: ");
sc.next();
}
else{
b = sc.nextInt();
if(b < 1 || b > 100) {
System.out.print("That integer isn't between 1 and 100! Try again: ");
sc.next();
}
else{
a = b;
break;
}
}
}
System.out.print("The number is: "+a+".");
}
}
私が抱えている問題は次のとおりです。プログラムが「その整数は 1 から 100 の間にありません! もう一度やり直してください: ," ユーザーからの 2 つの入力 (必要な入力ではなく) を待ちます - 最初の入力は完全に無視されます! 問題を説明するために実行したコンソール セッションを次に示します。
"Enter a number between 1 and 100: 2.5
That isn't an integer! Try again: 101
That integer isn't between 1 and 100! Try again: Apple.
42
The number is: 42.”
ご覧のとおり、入力"Apple".
に注意を払っていませんでした。次のように、これが正常に機能しない理由が完全にわかりません。
"Enter a number between 1 and 100: 2.5
That isn't an integer! Try again: 101
That integer isn't between 1 and 100! Try again: Apple.
That isn't an integer! Try again: 42
The number is: 42.”
私はJavaに非常に慣れていないので、よく説明されている答えは天の恵みです。どうやって修正するかよりも、なぜうまくいかないのかということに興味があります。
ちなみに、Eclipse 64ビットの最新バージョンを使用しています。