String转Float问题

来源:互联网 发布:小怪兽跳蛋 知乎 编辑:程序博客网 时间:2024/05/01 00:06

今天项目中发现一个由String转Float的bug,具体原因就是在EditText中输入多个”.”或者这开头输入”.” 的话,在进行Float.parseFloat(String str)的时候会抛异常,程序crash掉!

现在自己的解决方案是手动对字符串判断!具体代码如下:

EditText et = (EditText) rootView.findViewById(R.id.et);            et.addTextChangedListener(new TextWatcher() {                @Override            public void onTextChanged(CharSequence s, int start, int before, int count) {                    String str = s.toString();                    if (TextUtils.isEmpty(str)) {                        return;                    }                    int firstIdex = str.indexOf(".");                    int lastIndex = str.lastIndexOf(".");                    if (firstIdex == lastIndex && firstIdex != 0) {//已经存在一个小数点且小数点不在第一个位置                    Float valueOf = Float.valueOf(str);                        float float1 = Float.parseFloat(str);                        Log.e("zhilong", valueOf + "--" + float1);                    } else {                        if (str.length() == 1) {                            et.setText("");                        } else {                            et.setText(str.substring(0, str.length() - 1));                            et.setSelection(str.length()-1);                        }                    }                }                @Override                public void beforeTextChanged(CharSequence s, int start, int count, int after) {                }                @Override                public void afterTextChanged(Editable s) {                }            });
0 0
原创粉丝点击