String转Float问题

今天项目中发现一个由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) {

                }
            });

你可能感兴趣的:(日常问题)