使用小数点时的错误消息代码
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
块。 NumberFormatException
是 Integer.parseInt
在您传递无效输入时抛出的内容。
作为我正在编写的程序的一部分,有一个选项供用户输入数字以获得 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
块。 NumberFormatException
是 Integer.parseInt
在您传递无效输入时抛出的内容。