我有十个按钮,0-9,当按下一个按钮时,我想将其值显示在TextView中。所以初始显示如下:
0.00
如果我按下2按钮,它应该显示在TextView上,如下所示:
0.02
现在,如果按下5,则新值应为:
0.25
等等。我从来没有做过这样的事情,所以我不确定从哪里开始。所以我的问题是,实现这样的事情的最佳方法是什么?
编辑:我知道如何在按下按钮时显示内容,但是,当按下新按钮进入新位置时,我不确定如何转换每个数字。
答案 0 :(得分:1)
使用您正在显示的值存储一个int,并在输入数字时将该值乘以10并添加新数字。
类似的东西:
public void updateValue(int buttonPressed){
currentValue = (currentValue*10) + buttonPressed;
}
然后您要更新TextView,确保以合适的方式格式化字符串:
public String formatNum(){
String valueAsString = Integer.toString(currentValue);
while(valueAsString.length()<3){
valueAsString = '0' + valueAsString;
}
char[] stringBuilding = new char[valueAsString.length()+(((valueAsString.length())-2)/3)+1];
int valueAsStringPtr = valueAsString.length()-1;
int stringBuildingPtr = stringBuilding.length-1;
while(stringBuildingPtr>=0){
if(stringBuildingPtr==stringBuilding.length-3){
stringBuilding[stringBuildingPtr--] = '.';
} else if((stringBuilding.length-stringBuildingPtr-3)%4==0){
stringBuilding[stringBuildingPtr--] = ',';
} else {
stringBuilding[stringBuildingPtr--] = valueAsString.charAt(valueAsStringPtr--);
}
}
String returnVal = String.copyValueOf(stringBuilding);
return returnVal;
}
所有这些假设你有一个整数字段currentValue。
还要尝试在工作线程上做到这一点,以避免延迟用户界面,它不应该花费太长时间,但仍然是一个好主意。
注意:对于任何想知道为什么我选择使用in而不是float / double的人是因为我们将引入错误显示二进制表示作为小数。