首页 > 解决方案 > 计算器点功能问题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 或只是添加这个“”。我希望我的问题很清楚。

标签: javaandroid-studiocalculator

解决方案


删除dotSet. 你不需要它。

然后,类似于您如何执行此操作btn_add

} else if (screenTvGet().endsWith("+")) {
    screenTV.append("");

使用正则表达式来检查文本的最后部分btn_dot是否有 a :.

} else if (screenTvGet().matches(".*\\.\\d*")) {
    screenTV.append("");

推荐阅读