我研究了JTextField
中输入的验证,但据我所知,只能验证输入是否为字符串
、整数
或 数字
。谁能建议我如何验证该数字的具体值?例如是否在 0.5 - 1
范围内。谢谢。
最佳答案
两种可能的方法:
将 JTextField 的内容解析为 double 变量并使用简单的 if 语句。 您应该使用 try catch block 来处理可能的 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
关于java - 确认 JTextField 是否包含值 0.5-1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43044612/