用户输入仅检查int
我试图通过限制用户可以输入的内容来使用户输入不使程序崩溃,例如:
- 只是一个int
- 在1到30之间
我编写的代码只能在一定程度上起作用。如果您输入的内容不是整数,它将对其进行检查并要求您再次输入。如果您继续输入除int以外的任何内容,则再次输入。我还有另一个while循环,如果它确实输入一个int,并且它在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();
回答:
您需要结合这两个循环,以便每次最终用户输入新内容时都可以进行两项检查:
for(;;) { if(!sc.hasNextInt() ) {
System.out.println("only integers!: ");
sc.next(); // discard
continue;
}
choose=sc.nextInt();
if( choose<=0 || choose>30)
{
System.out.print("no, 1-30: ");
continue;
}
break;
}
循环退出后,choose
是1
和之间的数字30
(含)。
以上是 用户输入仅检查int 的全部内容, 来源链接: utcz.com/qa/397950.html