java - 计算器点功能问题android
问题描述
我正在研究计算器并练习 java 和 android 开发。除了点功能外,一切正常。这是问题(见最后一个点):
以下是代码:
case R.id.btn_dot:
if (dotSet) {
screenTV.append("");
} else if (isEmpty() || empty) {
screenTV.append("0.");
dotSet = true;
count++;
} else {
screenTV.append(".");
dotSet = true;
count++;
}
一个操作数:
ase R.id.btn_add:
if (isEmpty()) {
screenTV.append("");
} else if (screenTvGet().endsWith("+")) {
screenTV.append("");
} else if (!isEmpty()) {
screenTV.append("+");
dotSet = false;
empty = true;
resultSet = false;
count = 0;
}
break;
和一个数字:
case R.id.btn0:
if (resultSet) {
screenTV.append("");
} else if (isEmpty()) {
screenTV.append("");
} else {
screenTV.append("0");
empty = false;
}
最后,退格功能:
case R.id.btn_backspace:
String screenContent;
String screen = screenTV.getText().toString();
int screenMinusOne = screen.length() - 1;
String screenMinus = String.valueOf(screenMinusOne);
if (screen.endsWith("."))
dotSet = false;
if (isEmpty()) {
screenTV.setText("");
} else {
screenContent = screen.substring(0, screen.length() - 1);
screenTV.setText(screenContent);
}
break;
忘记“计数”。
我相信你可以看到全貌。现在,当我使用“BackSpace 函数”清除操作数并且前一个数字中有一个点时,我想以某种方式,点按钮不只是添加一个“。” 或“0”。到屏幕而不是返回 null 或只是添加这个“”。我希望我的问题很清楚。
解决方案
删除dotSet
. 你不需要它。
然后,类似于您如何执行此操作btn_add
:
} else if (screenTvGet().endsWith("+")) {
screenTV.append("");
使用正则表达式来检查文本的最后部分btn_dot
是否有 a :.
} else if (screenTvGet().matches(".*\\.\\d*")) {
screenTV.append("");