用户输入仅检查int

我试图通过限制用户可以输入的内容来使用户输入不使程序崩溃,例如:

  1. 只是一个int
  2. 在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;

}

循环退出后,choose1和之间的数字30(含)。

以上是 用户输入仅检查int 的全部内容, 来源链接: utcz.com/qa/397950.html

回到顶部