捕获字符串异常

时间:2014-02-05 10:52:49

标签: java netbeans

我在netbeans中创建一个jTextField限制整数输入,我不知道该怎么做。 我是这样做的:

private void txtNameKeyReleased(java.awt.event.KeyEvent evt) {
    try {
        String j = (String) txtName.getText();
    } catch ("Which Exception to Catch?") {
        if (!txtAge.getText().isEmpty()) {
            jOptionPane1.showMessageDialog(null,
                    "Please enter string values");
            txtAge.setText(txtAge.getText().replaceAll("[^a-z]", ""));
        }
    }
}

我应该把什么放在捕获物上?

2 个答案:

答案 0 :(得分:1)

您可以使用regular expression针对String.matches()测试输入,以确保它只是数字(无需捕获NumberFormatException之类的异常 - 这可能被视为不良做法激发例外来验证条件。)

String j = txtAge.getText();
if (!j.matches("\\d+")) { 
    // It is not a number
}

如果您只想尝试直接转换为Integer并捕获异常,则应使用Integer.parseInt()(如果输入无法解析为,则会抛出NumberFormatException Integer):

String j = txtAge.getText();
try { 
    Integer i = Integer.parseInt(txtAge);
}
catch (NumberFormatException e) { 
    // j isn't a number...
} 

编辑:您提供的答案似乎有些混乱。在您的问题中,错误消息是请输入整数值,就像有效输入只是数字一样。在答案中,您发布的消息是请输入字符串值

如果要验证输入有任何数字,则必须使用其他正则表达式,例如.*\\d.*"。如果匹配,则表示具有数字。或者您也可以使用\\D+来确保它有一个或多个非数字

答案 1 :(得分:0)

我已经解决了这个问题:

private void txtNameKeyReleased(java.awt.event.KeyEvent evt) {
String j = (String)txtName.getText();
if ( j.matches("\\d+") && !txtName.getText().isEmpty()) {
jOptionPane1.showMessageDialog(null, "Please enter String values");
txtName.setText("");
} }

感谢那些试图帮助我的人:)