私は、を使用してプログラム内で2つのintを受け入れ、doubleやcharなどの不正な入力を停止するためにブロックnextInt();
でラップするプログラムを作成しています。try catch
複数の間違った入力が入力されると、ループは同じ回数繰り返されます。これは、scan.next()
エラーのない不正な入力をキャッチするのに十分な回数ループする必要があるためだと思います。最初の実行時にこの数を知って、次に実行するループを何度も作成する方法はありますか?
出力では
if(cont == 'N') System.out.print("\nPlease re-enter\n\t:");
、不一致の入力が書き込まれた回数が出力され、ミラーリングされます。つまり、3 3.3を入力すると、1回余分に繰り返され、3.3 2.5を入力すると、3回余分に繰り返されます。
ループscan.next()
を設定してデフォルトで10回にしようとしましたが、やりすぎで、読み始める前にさらに8文字を入力する必要がありました。たぶんwhileループですが、その状態はどうなるのでしょうか。試してみwhile(scan.next() != null){}
ましたが、その状態は止まりませんでした。
//input error checking
char cont = 'Y';
do{
if(cont == 'N')
System.out.print("\nPlease re-enter\n\t:");
cont = 'Y';
/* to stop the accidential typing of things other
* than integers from being accepted
*/
try{
n1 = scan.nextInt();
n2 = scan.nextInt();
}catch(Exception e){
cont = 'N'; //bad input repeat loop
scan.next();//stops infinite loop by requesting Scanner try again
}
} while(cont == 'N');//do loop while told N for continue