ユーザーが入力できる内容を次のように制限することで、ユーザー入力がプログラムをクラッシュさせないようにしています。
- int のみである
- 1 ~ 30 の間
私が書いたコードは、ある時点までしか機能しません。int 以外のものを入力すると、それがチェックされ、再度入力するよう求められます。次に、int 以外を入力し続けると、. int を入力する場合は別の while ループがあり、1-30 ゾーンの外にある場合は、ユーザーに再度入力するように求めます。ただし、その後、ユーザーが別の「int 以外」を入力すると、プログラムがクラッシュします。sc.hasnextint()
と 1 から30 の間の入力のチェックの両方を組み合わせようとしましたが、 を のsc.nextint()
前に置きsc.hasnextint()
、ユーザーが int 以外のものを入力すると、プログラムがクラッシュします。条件ループの後に配置すると、ユーザー入力は宣言されません。
int choose;
System.out.print("type an integer: ");
Scanner sc=new Scanner(System.in);
while (!sc.hasNextInt() ) {
System.out.println("only integers!: ");
sc.next(); // discard
}
choose=sc.nextInt();
while (choose<=0 || choose>30)
{
System.out.print("no, 1-30: ");
choose=sc.nextInt();
}
sc.close();