Java While循环(检查键盘输入是否不是int,然后继续询问,直到插入int)

Java While循环(检查键盘输入是否不是int,然后继续询问,直到插入int),java,loops,while-loop,Java,Loops,While Loop,尝试检查来自键盘的输入是否不是int,然后继续询问,直到插入int。有什么建议吗 这是我的一段代码(如果用户将在输入流中插入除int以外的任何内容,则为catch部分): 这是我的try/catch块…任何其他方法都可以使它工作且短! 先谢谢你 //thinking about using : while(!myscanner.hasNextInt()) try { myinput

尝试检查来自键盘的输入是否不是int,然后继续询问,直到插入int。有什么建议吗

这是我的一段代码(如果用户将在输入流中插入除int以外的任何内容,则为catch部分):

这是我的try/catch块…任何其他方法都可以使它工作且短! 先谢谢你

                //thinking about using : while(!myscanner.hasNextInt())

            try
            {
                myinput = myscanner.nextInt();
                while(myinput > MAXARRAY || myinput < 0 || (myinput != (int)myinput))
                {   
                    System.out.print("Size must be from 0 - 15. Please reenter: ");
                    myinput = myscanner.nextInt();
                }
            }catch(InputMismatchException e)
            {
                while(myinput > MAXARRAY || myinput < 0 || (myinput != (int)myinput))
                {
                System.out.println("Size must be from 0 - 15. Please reenter: ");
                myinput = myscanner.nextInt();
                }
            }
//考虑使用:while(!myscanner.hasnetint())
尝试
{
myinput=myscanner.nextInt();
而(myinput>MAXARRAY | | myinput<0 | |(myinput!=(int)myinput))
{   
System.out.print(“大小必须介于0-15之间。请重新输入:”;
myinput=myscanner.nextInt();
}
}捕获(输入不匹配异常e)
{
而(myinput>MAXARRAY | | myinput<0 | |(myinput!=(int)myinput))
{
System.out.println(“大小必须介于0-15之间。请重新输入:”;
myinput=myscanner.nextInt();
}
}

您可以在循环时使用单个
,例如:

Scanner scanner = new Scanner(System.in);
while(true) {
    System.out.println("Enter an int value");
    if(scanner.hasNextInt()) {
        int token = scanner.nextInt();
        System.out.println(token);
        break;
    }else {
        scanner.nextLine();
        continue;
    }
}
下面的代码可以用来解决它使用正则表达式所需的输入。
myinput!=(国际)如果
myinput
的类型为
int
,则myinput
永远不可能为真。请提供更多解释或示例…谢谢,您先解释一下您的意图如何。尝试强制用户输入介于0和15之间的int…。如果用户不断插入超出该范围的任何内容或任何其他数据类型,他将被要求输入在扫描仪中重新输入该值,直到满足我所理解的条件。但是你的代码与你的需求几乎没有共同之处。你发给我的代码片段,我是一个大的内部人,我确实理解它,但我正在努力消除使用字符串的情况……我想我知道你的代码片段的结果是什么。。。。。。。我会执行它,看看我的假设是否正确:)
    BufferedReader dataInputReader = new BufferedReader(new InputStreamReader(System.in));
    String input = null;
    Integer number = null;
    //Below pattern says 0-15
    Pattern pattern = Pattern.compile("[0-9]|1[0-5]");
       while(input==null || !pattern.matcher(input).matches()){
           System.out.print("Enter number: ");
           input = dataInputReader.readLine();
           if(pattern.matcher(input).matches()){
               number = Integer.parseInt(input);
           }else{
               System.out.println("Size must be from 0 - 15. Please reenter: ");

           }

       }
       System.out.println("Input number is: "+number);