当前位置: 首页 > 知识库问答 >
问题:

扫描仪nextInt中的输入不匹配异常[duplicate]

徐昕
2023-03-14

我正在做一个场景,我只想接受1或2作为输入,并且在输入另一个数字或输入无效时处理错误。为此,我正在做:

do {
        try {
            System.out.println("Enter 1 or 2");
            option = input.nextInt();
        } catch (InputMismatchException ex) {
            System.out.println("Invalid menu number entered. A valid menu option is required. Enter you choice again: ");
            //option = input.nextInt(); //The error occurs here
        }
    } while(!(option == 2 || option == 1));

如果我添加option=input。nextInt()catch中,由于选项的范围在try内,它会给出一个错误。我希望它继续要求用户输入有效数字,即1或2,但如果我输入任何字符e,它将进入inputmaschException并退出。

共有1个答案

申屠乐池
2023-03-14

继续询问的最简单的方法是使用一个以而(true)为条件的do-time循环。此外,您必须调用nextLine()方法来清除缓冲区中可能的无效输入。否则,错误的输入将在无限循环中重复触发相同的异常。您的代码可能看起来像这样:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int option;
    do{
        System.out.println("Enter 1 or 2");
        System.out.println();
        try{
            option = input.nextInt();
            switch(option){
                case 1: 
                    System.out.println("option: "+option);
                    break;
                case 2:
                    System.out.println("option: "+option);
                    break;
                default: 
                    throw new InputMismatchException();
            }
        }
        catch(InputMismatchException ex){
            input.nextLine();
            System.out.println("Invalid menu number entered. A valid menu option is required. Enter you choice again: ");
        }
    }while(true);
}
 类似资料:
  • 好的,我要学习一个CS安全类,里面有一些基本的java编程,我们的第一个任务是玩。然而,我们也必须“防弹”我们的计划。虽然我的方法不是最理想的,但除了第一次输入外,它仍然有效。如果我为任何

  • 问题内容: 我是Java的新手学生,正在尝试完成一个使用扫描仪输入5个学生姓名的程序,然后在其中进行循环以为每个学生获得3个成绩。我一直卡在输入错误匹配错误,我不知道为什么。我试图正确匹配将哪些类型的输入输入到变量中。任何帮助将不胜感激! 这就是我所拥有的: 这就是我得到的: 问题答案: 您的问题在第20行。 这意味着在输入中,它期望一个int值,但它会发现另一件事,例如double,char数组

  • 我是Java新手。我必须从2D数组向终端显示int系数。我想在同一行中为同一卖家提供每个值。有一个换行符(由于扫描仪?)。我一直在寻找分隔符system.in但我不明白如何使用它,如果这是合适的。 请帮帮我好吗?先谢谢你 最终结果: 输入卖家数量5 输入型号4的数量 卖家1 0 3. 2个 0

  • 这里是Java新手,尝试扫描下面表单中的输入: 3 3 3 101 000 101 拜托,有更有经验的人能教我如何解决这个问题吗?我发现一些问题与。nextline()和。nextint()有类似的问题,但不完全是这样。不过,如果真的是复制品,我提前道歉... (如果需要,我会添加更多信息)

  • 问题内容: 发生异常时,如何使扫描仪重试? 考虑此应用程序在CLI模式下运行。 例: 如果用户未输入类型输入,则抛出错误。但我想在错误消息出现之后。应该要求用户再次输入 宽度 。 怎么做? 问题答案: 如果我对您的理解正确,则希望该程序在失败后要求用户重新输入正确的输入。在这种情况下,您可以执行以下操作: 注意:您 只能 捕获并重试一次。这些方法会引发其他异常,如果您尝试重试这些异常,则您的应用程

  • 这是我在Jcreator上编写的代码 代码如下:- 什么是错误的,我如何纠正它?请帮助。