Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 捕获字符串异常_Java_Netbeans - Fatal编程技术网

Java 捕获字符串异常

Java 捕获字符串异常,java,netbeans,Java,Netbeans,我正在netbeans中生成一个jTextField restrict整数输入,我不知道该怎么做。 我是这样做的: private void txtNameKeyReleased(java.awt.event.KeyEvent evt) { try { String j = (String) txtName.getText(); } catch ("Which Exception to Catch?") { if (!txtAge.getText(

我正在netbeans中生成一个jTextField restrict整数输入,我不知道该怎么做。 我是这样做的:

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]", ""));
        }
    }
}
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("");
} }

我应该在catch上加什么?

您可以根据using测试输入,以确保它只是数字(无需捕获异常,例如a-引发异常以验证条件可能被视为不好的做法)

如果您只是想尝试直接转换为
整数
,并捕获异常,则应使用(如果无法将输入解析为
整数
,则会引发
NumberFormatException
):


编辑:您提供的答案似乎有点混乱。在您的问题中,错误消息是“请输入整数值”,好像有效输入仅为数字。在您发布的回复中,消息是“请输入字符串值”


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

我已解决了我的问题,如下所示:

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]", ""));
        }
    }
}
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("");
} }

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

你的问题到底是什么?不。我不想使用文档筛选器。String j=(String)txtName.getText();这不会引发异常,因为getText()始终返回字符串。不需要强制转换为字符串。我认为您希望将输入字符串转换为整数,然后在用户输入不是有效整数时引发NuberFormatException。不,如果输入是整数或任何非字符串输入,我希望textfield拒绝输入。这就是我寻求帮助的原因。好的,我想了解更多。
\d
是只匹配数字的特殊标志。
+
表示一次或多次出现。如果要匹配零次或多次出现(即接受空字符串),可以使用
*
。我建议您查看一下。等等。我认为您提供的帮助有错误:-)您也可以使用
\\d+
仅匹配一个或多个非数字。无需检查
isEmpty()正则表达式已经检查了至少一个数字。此外,你可以考虑一些有帮助的答案和解决问题的答案。这将有助于未来的访问者有一个明确的答案,也会让其他用户看到这个问题已经被赋予了VALI。d回答。所以不带
isEmpty()按backspace键就可以了
?这里似乎有点混乱。在您的问题中,错误消息是请输入整数值,就好像有效输入只有数字一样。在这个回答中,消息是请输入字符串值。如果您想验证输入没有任何数字,您必须使用另一个正则表达式,如
*\\d.*”
。如果它匹配,就意味着它有一个数字。嗯,我在编辑时遇到了麻烦。对不起。但是我想要的是禁用整数项。然后看看我在答案中的编辑<代码>\\d+
将检测输入为
1234
,但不是
name1
。您应该使用
\\D+
仅匹配非数字。