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