尝试捕获和负输入

时间:2017-03-16 02:38:24

标签: java exception try-catch

我有一个InputMismatchException,它停止输入小数,但它对负整数/负小数没有帮助。

if(userInput == 1) {

            int l;

            l = 0;

            try {

                l = input.nextInt();


            } catch (InputMismatchException e) {

                System.out.println("");
                input.next();

            } 

        }

如果我添加一个带有if语句的do while循环等于或小于零,它将在if(userInput == 1)语句中循环,而不是从菜单的开头开始,就像它是否为正输入小数。它对负小数也没有帮助。

我试图在catch中添加两个异常,但无法使其工作。

2 个答案:

答案 0 :(得分:0)

试试这个:

if (input < 0){
      throw new IllegalArgumentException("Input cannot be negative.");
}

如果数字为负数,它将抛出异常,然后执行catch代码。

答案 1 :(得分:0)

您可以将您的int转换为String并检查它是否有小数点或负号。

Scanner input = new Scanner(System.in);
    int l;
    while (true)
    {
        l = input.nextInt();
        if ((""+l).indexOf('.') >= 0 || (""+l).indexOf('-') >= 0)
        {
            System.out.println(/*your message here*/);
        }
        else
        {
            break;
        }
    }

//continue with your program

编辑:语法