我试图通过限制用户可以输入的内容来让我的用户输入不会使我的程序崩溃,例如:
- 只是一个 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();
最佳答案
您需要组合这两个循环,以便每次最终用户输入新内容时都会进行两项检查:
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
之间的数字(含)。
关于java - 仅检查用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12487734/