先看下效果圖,
界面中有我自己做的個數字輸入鍵盤。
思考:對於金額的合法性考慮,列舉所有金額不合法的情況。
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);
}
}
}
}
邏輯就是這個樣子,裏面的代碼改下就可以,主要是記得金額的不合法有那先限制就可以了。