确认JTextField是否包含0.5-1的值?

时间:2017-03-27 11:03:30

标签: java swing jtextfield

我已经在JTextField中研究了输入验证,但从我看到的情况来看,只能验证输入是stringinteger还是digit 。有谁能建议我如何验证数字的具体价值?例如,它是否在0.5 - 1范围内。谢谢。

3 个答案:

答案 0 :(得分:2)

两种可能的方式:

将JTextField的内容解析为double变量并使用简单的if语句。 您应该使用try catch块来处理可能的NumberFormatException(如果您的文本无法转换为double)。

示例:

double value = 0;
try {
    value = Double.parseDouble (yourTextField.getText ());
}
catch (NumberFormatException e) {
    // Handle exception ...
}
if (value >= 0.5 && value <= 1) {
    // ...
}
else {
    // ...
}

您还可以检查您的文本是否与给定(智能)正则表达式匹配。

考虑以下模式(你需要两个反斜杠来转义点和其他特殊字符):( 1(\。0 *)?| 0?\。[5-9] [0-9] *)

此模式接受1(或1后跟小数分隔符和任意数量的零出现)或0.5之间的数字(此正则表达式允许“.5”)和0.99999 ...

示例(使用java.util.regex.Pattern):

System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.4")); // -> false
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0..5")); // -> false
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.111")); // -> false
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.5")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.5000543")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.50+")); // -> false
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "1.0")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "1.0000")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "1")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "21")); // -> false
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", ".56256")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", ".46256")); // -> false

答案 1 :(得分:0)

执行此操作的一种方法是将Textfield的值解析为像这样的

    float tfValue  = Float.parseFloat(jTextField1.getText());

然后你可以检查modulo 1是否等于0.如果是,则该值为整数。

    if (tfValue % 1 == 0) {
        System.out.println("is an integer");
    }
    else System.out.println("is a float");

答案 2 :(得分:0)

试试这个,也许是对你的帮助

                JTextField field = new JTextField();
                field.addKeyListener(new java.awt.event.KeyAdapter() {

                    public void keyTyped(java.awt.event.KeyEvent evt) {
                        String text = ((JTextField)evt.getSource()).getText();
                        if (!(evt.getKeyChar() >= '0' && evt.getKeyChar() <= '9')) {
                            // it is number
                        }
                        else if (!(evt.getKeyChar() >= 'a' && evt.getKeyChar() <= 'Z')) {
                            // it is char a-Z
                        }
                        else  {
                            // it others
                        }
                    }
                });

但数字的最佳方法是使用带有指定掩码的JFormattedTextField