java - 仅检查用户输入

标签 java user-input

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

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

循环退出后,choose130之间的数字(含)。

关于java - 仅检查用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12487734/

相关文章:

java - 在哪里可以找到 Aerith 项目源代码

java - 检查字符串长度返回 NullPointerException?

java - 字符数组

java中方法签名泛型扩展自此

java - 在 while 循环中两次请求用户输入

java - 为多个平台开发

javascript - JS/jQuery - 根据用户输入显示结果

java - Java中的延续错误

javascript - 根据用户输入选择 JavaScript 变量和数组元素

c - 如何从 C 中的用户输入读取 .txt 文件