【问题标题】:While loop (check if the input from the keyboard is not an int, then keep asking until an int will be inserted)While 循环(检查来自键盘的输入是否不是 int,然后一直询问直到插入 int)
【发布时间】:2017-09-03 08:40:56
【问题描述】:

尝试检查来自键盘的输入是否不是 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();
                }
            }

【问题讨论】:

  • 如果myinput 的类型为intmyinput != (int)myinput 永远不会为真。
  • 请提供更多解释或示例....谢谢
  • 不如先说明你的意图。
  • 试图强制用户输入一个介于 0 和 15 之间的 int ......如果用户不断插入超出该范围的任何内容或任何其他数据类型......他将被要求在扫描仪中重新输入值,直到满足条件
  • 我明白了。但是您的代码与您的要求几乎没有共同之处。

标签: java loops while-loop


【解决方案1】:

您可以使用单个 while 循环来完成,例如:

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;
    }
}

【讨论】:

  • 你发给我的 sn-p,我是个大人物,我确实理解它,但我正在尝试使用字符串来消除......我想我知道你的结果是什么sn-p.......我会执行它,看看我的假设是否正确:)
【解决方案2】:

下面的代码可以使用正则表达式来解决它。

    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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 2018-04-14
    • 2017-07-19
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    相关资源
    最近更新 更多