android 金額輸入框(小數點後兩位)

先看下效果圖,這裏寫圖片描述

界面中有我自己做的個數字輸入鍵盤。
思考:對於金額的合法性考慮,列舉所有金額不合法的情況。
1.不能以”.”開頭;
2.以”0”開頭的話,後面必須跟上”.”;
3.小數點後有且有兩位小數;
4.有且有一個小數點;

直接看代碼:

//num是輸入框中的值,etNum是輸入框,numBoardView是自定義的數字鍵盤
private void checknum(String num) {
            if (num.length()==1){
                //不能以"."開頭
                if (".".equals(num)){
                    etNum.setText("");
                    //回調提示內容是空
                    numBoardView.deleteSubStringBuffer(0, num.length());
                }else{
                    etNum.setText(num);
                }
            }else if ("".equals(num)){
                etNum.setText(num);
            }
            else{
                String first=num.substring(0,1);
                String second=num.substring(1,2);
                //
                if ("0".equals(first)&&!".".equals(second)){
                    //第一位是"0",第二位必須是"."
                    etNum.setText("0");
                    //回調刪除數字鍵盤內的buffer
                   numBoardView.deleteSubStringBuffer(1,2);
                }else {
                    int pointSize=0;
                    for (int i=0;i<num.length();i++){
                        //得到小數點
                        String str=num.substring(i,i+1);
                        if (num.substring(i,i+1).equals(".")){
                            pointSize++;
                        }
                    }
                    if(pointSize==1){
                        int firstPointLocation=num.indexOf(".");
                        if (firstPointLocation<num.length()-1){
                            //小數點後有且只有兩位
                            if (num.length()-1-firstPointLocation>=3){
                                //小數點已經兩位了
                                etNum.setText(num.substring(0,num.length()-1));
                                numBoardView.deleteSubStringBuffer(num.length()-1,num.length());
                            }else{
                                etNum.setText(num);
                            }
                        }else{
                            etNum.setText(num);
                        }
                    } else if (pointSize>=2){
                        //兩個小數點
                        etNum.setText(num.substring(0,num.length()-1));
                        numBoardView.deleteSubStringBuffer(num.length()-1,num.length());
                    }else{
                        etNum.setText(num);
                    }
                }
            }
        }

邏輯就是這個樣子,裏面的代碼改下就可以,主要是記得金額的不合法有那先限制就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章