语句时出错

时间:2013-05-11 22:53:51

标签: java while-loop numberformatexception

我正在尝试声明当您输入整数时终止。我只能制作一个继续整数的。我还在考虑尝试捕捉特定的错误女巫是NumberFormatExeption,除了我不能很好地解决这个问题 这是我的代码:

import javax.swing.JOptionPane;
import java.lang.NumberFormatException;

public class Calc_Test {
public static void main(String[] args) throws NumberFormatException{
    while(true){
        String INT= JOptionPane.showInputDialog("Enter a number here: ");
        int Int = Integer.parseInt(INT);
        JOptionPane.showConfirmDialog(null, Int);
        break;
        }
    }
}

[编辑] 我清理了我的代码,并在堆栈溢出的朋友的帮助下想出了这个。这是代码:

import javax.swing.JOptionPane;

public class Calc_Test {
public static void main(String[] args){
    while(true){
        String inputInt= JOptionPane.showInputDialog("Enter a number here: ");
        if(inputInt.matches("-?\\d+")){
            JOptionPane.showConfirmDialog(null, "\"" + inputInt + "\"" + " is a number");
            break;
            }
            JOptionPane.showConfirmDialog(null, "\"" + inputInt + "\"" + " is not a number. Therefore, " + "\"" + inputInt + "\"" + " could not be parsed. Try again.");
        }       
    }
}

2 个答案:

答案 0 :(得分:2)

您可以将String#matches()与简单的正则表达式一起使用,以查看输入是否仅包含数字:

while(true){
    String input = JOptionPane.showInputDialog("Enter a number here: ");
    if (input.matches("-?\\d+")) {
        int intVal = Integer.parseInt(input);
        JOptionPane.showConfirmDialog(null, intVal);
        break;
    }
}

正则表达式-?\\d+表示可选减号,后跟一个或多个数字。您可以在Java教程Regular Expressions section中阅读有关正则表达式的更多信息。

请注意,我已将变量名称更改为以小写字母开头,以遵循Java命名标准。

答案 1 :(得分:2)

您需要将其放入try/catch块中。另外,尝试为变量提供更好的名称。这是一个如何做到这一点的例子:

while (true) {
    String rawValue = JOptionPane.showInputDialog("Enter a number here: ");
    try {
        int intValue = Integer.parseInt(rawValue);
        JOptionPane.showMessageDialog(null, intValue);
        break;
    } catch (NumberFormatException e) {
        JOptionPane.showMessageDialog(null, "You didn't type a number");
    }
}