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

检查nextInt()中的十进制数输入

锺离赤岩
2023-03-14

我试图让我的代码在用户输入十进制数/负数时提示错误消息,并将继续循环,直到实现大于0的正数。

这就是我目前所拥有的;

public static void numberFunctions()
{   



    System.out.println("Calculating a Factorial");
    Scanner myScan= new Scanner (System.in);
    System.out.println("Please enter the number you'd like to use: ");
    int number = myScan.nextInt();

    System.out.println(number);       

        if(number>0)
    {
        int factorial = 1;
        int count;

        for (count = number; count >=1; count --)
        {
            factorial = factorial * count;

            System.out.print(count +" * ");


        }

        System.out.println(" = " + factorial);

    }
    else
    {

        System.out.println("ERROR! Please enter a positive number");

    } 
}

共有3个答案

祁聪
2023-03-14

负数检查部分做得很好。但是,如果用户输入无效字符串或实数,这行代码将引发异常,因此我们需要捕获该错误:int number=myScan。nextInt() 在使用扫描仪后始终关闭扫描仪也是一个很好的做法,因此我们将把它放在最后一部分。以下是我建议您使用的代码:

public static void  numberFunctions()
    {   
        System.out.println("Calculating a Factorial");
        Scanner myScan= new Scanner (System.in);
        System.out.println("Please enter the number you'd like to use: ");
        try {
            int number = myScan.nextInt();
            if(number>0)
            {
                int factorial = 1;
                int count;
                for (count = number; count >=1; count --)
                {
                    factorial = factorial * count;
                    System.out.print(count);
                    if (count != 1) {
                        System.out.print(" * ");
                    }
                }
                System.out.println(" = " + factorial);
            }else {
                System.out.println("ERROR! Please enter a positive number");
            }
        }catch(InputMismatchException ex) {
            System.out.println("ERROR! Please enter a positive number");
        }finally {
            myScan.close();
        }
    }

颜经艺
2023-03-14

在获取输入时添加try/catch块。

try {
    int number = myScan.nextInt();
}
catch(InputMismatchException e) {
    System.out.println("Enter integer numbers only");
    System.out.println(scanner.next() + " was not valid input.");
}
谭富
2023-03-14

首先你可以创建一个方法例如

public static int getInteger() {

}

在该方法中,您可以要求用户输入一个整数,使用一个尝试在一个循环中捕获一个块,这样,如果他们输入一个双代码或字符串,它将捕获异常并要求用户再次尝试输入整数。

一旦你明白了这一点,你就可以调用这个方法并检查返回的数字是否大于0。

一旦您创建了这个方法,您就可以随时使用它向用户询问整数。

 类似资料:
  • 问题内容: 如何检查数字是否为小数? 使用Objective-C: 问题答案: 如果将数字四舍五入(可以使用下限功能来完成),然后从原始数字中减去该数字,则会得到两者之间的差。 编辑- 我的原始答案建议计算数字与其下限等值之间的差,以查看小数点后是否有任何单位。但是,如后面所述,可能存在舍入错误,这会导致内存中值的表示与实际含义略有不同。 例如,3.0可以表示为3.00000000000001,因

  • 我正试图解析颤振中的输入,并从中提取双倍值。即用户只能输入十进制数。 为此,我使用TextField: 但在iOS设备上,我的键盘上有数字和逗号(,),而不是点()。当用户输入逗号时,我正在分析字符串,出现如下错误: 处理这件事最好的方法是什么?一些肮脏的解决方案是: 使用TextInputType.number有选项(签名:真,十进制:真)-这给键盘不仅有数字和用户输入点。 也许可以先用点代替逗

  • 在标准库中学习十进制,这似乎是python 3.6中的一个新函数: 返回一对整数(n, d),这些整数以小数形式表示给定的Decimal实例,以最低条件表示,并带有正分母 所以我试了一下: 对于工作正常,但是很难相信是的最低分数项,也许可以是更好的输出? 好的,我在使用而不是时得到了回答,那么这是否意味着在使用Decimal()时,最好输入而不是?

  • 用户用十六进制或二进制输入一个数字(必须以0x或0b为前缀,如果没有给出错误信息) 我不能用基数,我只是用整数。parseInt(s) 我不知道怎样才能使这个计划奏效。。请帮帮我,我还缺什么?

  • 我必须为赋值创建二进制到十进制的数字转换器。这项任务有一些限制。它们是:1。没有无限循环2。中断语句以退出循环3。没有标签或转到语句4。不使用整数。parseInt(字符串s,整数基数) 我得到了部分转换下来,但我有异常处理的问题。我试图在输入不是二进制时显示错误消息,并继续允许用户输入,每次无效的尝试都显示相同的错误消息。 我曾尝试用while和do-while循环替换for循环,但结果对我来说

  • 在使用“number”类型和值“1,5”的输入发布表单后,浏览器(Chrome 43.0.2357.130,FF 38.0.5)发送带有点作为小数分隔符的数字,但输入具有属性lang=“cs”(在捷克共和国,我们使用十进制逗号),因此对于ASP。NETMVC的格式不正确。 如何设置浏览器(表单/输入)以发送用户真正填写的内容(在我的示例中为“1,5”)? 从浏览器发送的表单数据: