十进制数验证/限制用户:android

时间:2014-03-20 05:16:29

标签: android validation double

我运行了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)});

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
}

希望这有帮助!