使用小数点时的错误消息代码

code for error message if decimal point is used

作为我正在编写的程序的一部分,有一个选项供用户输入数字以获得 facotrial。到目前为止我有这个:

number = Integer.parseInt(JOptionPane.showInputDialog("\nPlease enter the number you wish to obtain the factorial for"));
    JOptionPane.showMessageDialog(null, "You entered the number: " + number);


    count = (number - 1);

    if(number > 1)
    {

    do

    {

    factorial = number * count;
    JOptionPane.showMessageDialog(null, number + " * " + count + " = " + factorial);
    count--;
    number = factorial;

    }

    while(count > 0);

    JOptionPane.showMessageDialog(null, number + " * " + count + " = " + factorial);

    JOptionPane.showMessageDialog(null, "The facorial of " + number + " is " + factorial);

    }

    else if (number == 0)

    {

    JOptionPane.showMessageDialog(null, "Factorial of 0 is 1");

    }

    else if (number == 1)

    {

    JOptionPane.showMessageDialog(null, "Factorial of 1 is 1");

    }

    else if (number < 0)

    {

    JOptionPane.showMessageDialog(null, "Please enter a number equal to or greater than 0");

这很好用,但简而言之还包括一条错误消息,提示用户在使用十进制数时以及输入字母时输入整数。我正在努力编写代码来实现这一点。

提前致谢

瑞安

您可以使用正则表达式来确保数字不是小数

if (!"wrong_number".matches("^-?\d+$")) {
    //error
}

除此之外,永远不要假设您的输入是正确的,总是先检查再转换:)

问题是当输入无效时,Integer.parseInt 抛出异常,中断了您的方法流程。解决这个问题的诀窍是将 Integer.parseInt 的调用移到代码体内,您可以在其中处理因无效输入导致的任何异常。您可以通过将输入存储到 String 并在解析时捕获异常来实现:

String input = JOptionPane.showInputDialog("\nPlease enter the number you wish to obtain the factorial for");
number = -1;
try {
    number = Integer.parseInt(input);
} catch (NumberFormatException nfe) {
    ... // Show a message here saying that "input" is invalid
}

注意 try / catch 块。 NumberFormatExceptionInteger.parseInt 在您传递无效输入时抛出的内容。