先看下效果图,
界面中有我自己做的个数字输入键盘。
思考:对于金额的合法性考虑,列举所有金额不合法的情况。
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);
}
}
}
}
逻辑就是这个样子,里面的代码改下就可以,主要是记得金额的不合法有那先限制就可以了。