Java 计算器点函数问题

Java 计算器点函数问题,java,android-studio,calculator,Java,Android Studio,Calculator,我正在做一个计算器,练习java和android开发。除了点函数外,其他功能都可以正常工作。这里是问题(见最后一点): 代码如下: case R.id.btn_dot: if (dotSet) { screenTV.append(""); } else if (isEmpty() || empty) { screenTV.append("0."); d

我正在做一个计算器,练习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 function”清除一个操作数,并且前面的数字中有一个点时,点按钮不只是在屏幕上添加“.”或“0”。相反,它返回null或只是添加这个“”。我希望我的问题是清楚的

删除
点集
。你不需要它

然后,类似于您对
btn\u add
执行此操作的方式:

}else if(screenTvGet().endsWith(“+”)){
屏幕电视。附加(“”);
使用
btn\u dot
的正则表达式检查文本的最后部分是否有

}如果(screenTvGet().matches(“.\\\.\\d*”)匹配,则为else{
屏幕电视。附加(“”);

删除
点集
。您不需要它

然后,类似于您对
btn\u add
执行此操作的方式:

}else if(screenTvGet().endsWith(“+”)){
屏幕电视。附加(“”);
使用
btn\u dot
的正则表达式检查文本的最后部分是否有

}如果(screenTvGet().matches(“.\\\.\\d*”)匹配,则为else{
屏幕电视。附加(“”);

谢谢,但是如果有两组以上的数字,比如“12.34+45+123+56”,它是否有效?@Rklearner我建议你学习基本正则表达式,这样你就可以自己回答这个问题了。这里的正则表达式是寻找一个点(
),后面只有数字(0-9)在字符串的末尾,这意味着它将为您提到的字符串返回
false
。谢谢,伙计,我不熟悉正则表达式,我需要了解更多有关它的信息。谢谢,但是如果有两组以上的数字,比如“12.34+45+123+56”,它是否有效?@Rklearner我建议你学习基本正则表达式,这样你就可以自己回答这个问题了。这里的正则表达式是寻找一个点(
),后跟字符串末尾的数字(0-9),这意味着它对你提到的字符串返回
false
。谢谢,伙计,我不熟悉正则表达式,我需要了解更多。