Java 如何创建不包含';不接受在输入对话框中输入的一定数量的数字?

Java 如何创建不包含';不接受在输入对话框中输入的一定数量的数字?,java,regex,swing,exception,joptionpane,Java,Regex,Swing,Exception,Joptionpane,它是一个添加数字的按钮 试图创建限制对话框中数字数量的异常,它会检测数字是否在限制范围内,但不会停止程序。我不知道此代码的上下文,但它不会调用自定义异常。如果用户输入无效输入,只需使用循环显示对话框: Pattern p = Pattern.compile("^[0-9]{0,3}$"); Matcher m = p.matcher(in); if (m.find()) { JOptionPane.showMessageDialog(null, " 4 in

它是一个添加数字的按钮


试图创建限制对话框中数字数量的异常,它会检测数字是否在限制范围内,但不会停止程序。

我不知道此代码的上下文,但它不会调用自定义异常。如果用户输入无效输入,只需使用循环显示对话框:

Pattern p = Pattern.compile("^[0-9]{0,3}$");
Matcher m = p.matcher(in);
if (m.find()) {
    JOptionPane.showMessageDialog(null, " 4 integers please");
}
另外,您需要将
if(m.find())
更改为
if(!m.find())
,否则只有当用户输入正确的整数数时,“请只输入四个整数:”对话框才会显示


如果必须使用异常,只需创建一个扩展 类别:

并在if语句中实现它:

public class MyException extends Exception {

    public MyException(int amount) {
        super("Only " + amount + " integers are allowed");
    }

}

我不知道这段代码的上下文,但它不需要自定义异常。如果用户输入无效输入,只需使用循环显示对话框:

Pattern p = Pattern.compile("^[0-9]{0,3}$");
Matcher m = p.matcher(in);
if (m.find()) {
    JOptionPane.showMessageDialog(null, " 4 integers please");
}
另外,您需要将
if(m.find())
更改为
if(!m.find())
,否则只有当用户输入正确的整数数时,“请只输入四个整数:”对话框才会显示


如果必须使用异常,只需创建一个扩展 类别:

并在if语句中实现它:

public class MyException extends Exception {

    public MyException(int amount) {
        super("Only " + amount + " integers are allowed");
    }

}

您提供的代码确实比需要的少

但是这里有一种在
TextArea
中输入的字符超过3时触发事件的方法

假设您的
TextArea
名为
txtArea

if (!m.find()) {
    throw new MyException(4);
}

您提供的代码确实比需要的少

但是这里有一种在
TextArea
中输入的字符超过3时触发事件的方法

假设您的
TextArea
名为
txtArea

if (!m.find()) {
    throw new MyException(4);
}

您只需使用.matches(“\\d{4}”)中的
作为条件,并仅当该条件为
true
时才添加到文本区域

    txtArea.textProperty().addListener((observable, oldValue, newValue) -> {
        if(newValue.length()>3){
            JOptionPane.showMessageDialog(null, " 4 integers please");
            //Do whatever you need after the Alert is shown
            txtArea.setText(oldValue);
        }
    });

您只需使用.matches(“\\d{4}”)
中的
作为条件,并仅当该条件为
true
时才添加到文本区域

    txtArea.textProperty().addListener((observable, oldValue, newValue) -> {
        if(newValue.length()>3){
            JOptionPane.showMessageDialog(null, " 4 integers please");
            //Do whatever you need after the Alert is shown
            txtArea.setText(oldValue);
        }
    });


它是一个向文本区域添加数字的按钮,因此如果输入了3个整数,它将给出我创建的错误消息above@Java1245-一个整数最多是4位还是需要4位整数?只接受4位数字编辑是一个向文本区域添加数字的按钮,因此如果输入3位整数,则应给出一个错误我创建的消息above@Java1245-一个整数最多是4位,还是您想要4位整数?只接受4位我知道您来自哪里,我有一个try-and-catch块不接受字母,您提供的代码仍然接受数字。我想循环是最好的方式。任何我可以尝试的想法!=4我知道您来自哪里,我有一个try-and-catch块,它不接受字母,您提供的代码仍然接受数字。我想循环是最好的方式。任何我可以尝试的想法!=4我认为它在文本属性之后需要一个参数我认为它在文本属性之后需要一个参数这是有道理的,但它不会停止向文本区域添加数字消息对话框会弹出它发出分派errors@Java1245-我已经更新了答案以满足此要求。我明白了,但这允许将数字添加到文本区域,而现在它不显示消息这是有意义的,但它不会停止将数字添加到文本区域消息对话框会弹出,它给出分派errors@Java1245-我已经更新了答案以满足此要求。我明白了,但这允许将数字输入到文本区域,现在不会显示消息