自己封装的一个Edittext工具,让其只能输入指定位数的小数,同时不大于指定数

   在Androi开发中,有关数字的的需求有很对,比如在输入金额的时候,正常的逻辑应该是只能输入小数点后两位,而且,你取得钱不能大于你的余额,
你输入类似01,02这样的数字时,程序会自动把无用的0去掉,这就是我写这个工具类的目的,最开始想写成正则的形式,但是没有想好,就写了这个工具类,
利用异常处理,抛砖引玉吧,希望大家能写出更好的方法。


/**
 * 只能输入指定位数小数
 * stringLength 代表指定位数
 */
public static void onePointDecimals(Editable s,int stringLength) {
    if (s.toString().trim().isEmpty()) {
        return;
    }
    try {
	//找到第一个小数点的位置
        int start = s.toString().indexOf('.');
        if (start == 0) {
            s.replace(0, 1, "0.");
        }
	//测量出小数点后的长度,
        int textLength = s.toString().length() - start;
        if (start > 0) {
            if (textLength > stringLength) {
                s.delete(s.length() - 1, s.length());
            }
            //处理负数
            else if (textLength > (stringLength+1) && s.toString().indexOf('-') == 0 ) {
                s.delete(s.length() - 1, s.length());
            }
            if (s.toString().indexOf('0') == 0) {
                if (s.toString().indexOf('1') == 1 || s.toString().indexOf('2') == 1 || s.toString().indexOf('3') == 1
                        || s.toString().indexOf('4') == 1 || s.toString().indexOf('5') == 1 || s.toString().indexOf('6') == 1
                        || s.toString().indexOf('7') == 1 || s.toString().indexOf('8') == 1 || s.toString().indexOf('9') == 1) {
                    s.delete(s.length() - 2, s.length() - 1);
                }
            }
            //处理负数
            else if (s.toString().indexOf('-') == 0 && s.toString().indexOf('0') == 1) {
                if (s.toString().indexOf('1') == 2 || s.toString().indexOf('2') == 2 || s.toString().indexOf('3') == 2
                        || s.toString().indexOf('4') == 2 || s.toString().indexOf('5') == 2 || s.toString().indexOf('6') == 2
                        || s.toString().indexOf('7') == 2 || s.toString().indexOf('8') == 2 || s.toString().indexOf('9') == 2) {
                    s.delete(s.length() - 3, s.length() - 2);
                }
            }

            Double.valueOf(s.toString());
            if (s.toString().equals("00")) {
                s.delete(s.length() - 1, s.length());
            }else if(s.toString().equals("-00")){
 	        s.delete(s.length(), s.length()- 2);

	    }

        }


	//添加大小判断在此处添加
	

    } catch (Exception e) {
        //只要出现异常就会执行删除前一个文字
        e.printStackTrace();
        s.delete(s.length() - 1, s.length());
    }
}




//如果需要判断是否大于某个数字,在catch前注释处添加,入参加上这个数字

if (Double.valueOf(s.toString()) > num) {
    s.delete(s.length() - 1, s.length());
}

第一次写博客,写的东西有可能有不详细的地方,希望大家多提建议,我会写的越来越好的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值