我运行了android程序,其中editText将其输入之一作为double / decimal值。我想要做的是限制用户输入小数点后的0或5之外的任何其他数字。 像1.5,1.0,2.5,2.0等 我已成功限制用户将值放到一个小数位。有没有什么方法可以在十进制之后输入0或5,或者如果用户输入1.2或者小数点后的5或0以外的其他值,我可以进行验证。
要限制的代码是
public class DecimalDigitsInputFilter implements InputFilter {
Pattern mPattern;
public DecimalDigitsInputFilter(int digitsBeforeZero,int digitsAfterZero) {
mPattern=Pattern.compile("[0-9]{0," + (digitsBeforeZero-1) + "}+((\\.[0-9]{0," + (digitsAfterZero-1) + "})?)||(\\.)?");
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
Matcher matcher=mPattern.matcher(dest);
if(!matcher.matches())
return "";
return null;
}
}
我用它作为
txtLdays.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(5,1)});
答案 0 :(得分:0)
我要做的是一个非常简单的测试。 一旦你像你所做的那样验证了输入,你可以测试输入的数字是否可以除以0.5,结果是没有分数的数字。 例如,如果用户输入2.5 - 你将它除以0.5,你得到5.即可。 如果用户输入了2.3,你除以0.5 - 你会得到一个分数,这是不行的。
遵循以下代码建议:
Double input = Double.valueOf(txtLdays.getText.toString());
if (input % 0.5 == 0){ //Check if you number divides by 0.5 with no fraction
//Your number divides by 0.5, input is ok
} else {
//Your number does not divide by 0.5, please re-enter number
}
希望这有帮助!