java - 在新值(value)出现之前先弄清楚科学按钮

标签 java javafx calculator

这可能与我的其他问题重复:JavaFX Calculator Doesn't Clear After Answer

我用Javafx/Java制作了一个科学计算器,但是“科学”按钮,例如tan、cos、平方根有清除问题。加、减、乘和除按钮工作正常。

Ex): 假设我做了 2 + 2,然后按 = 并得到 4。如果我按另一个数字,它会首先清除,而不是像这样添加到数字上: 45 而是像这样: 5 如果我按+/-///按钮,当然它也会清除文本区域,以便用户可以输入另一个数字。

例如)假设我做了 16 ,然后按平方根并得到 4。如果我按另一个数字,它只会添加到原始数字上,如下所示: 323 不是这样: 3 这就是所有其他科学按钮的问题,也是。

在答案之后出现新值之前,我确实触发了同样的科学/+、-等清除操作,所以我不知道这里的问题。

else if(event.getSource() == cos)
        {
            data = Float.parseFloat(display.getText());
            Double ans = Math.cos(Math.toRadians(data));
            display.setText(String.valueOf(ans));
            dot.setDisable(false);  
            if(event.getSource() != divide && event.getSource() != add && event.getSource() != multi && event.getSource() != minus && event.getSource() != pow && event.getSource() != mod)
            {
                start = true;
            } 
        }

这是“开始”代码:

        private boolean start = false;
        if(start)
        {
            data = Double.parseDouble(display.getText());
            start = false;
        }

以及我如何使用+、-等按钮做到这一点:

        else if(event.getSource() == equals)
        {
            Double secondOperand = Double.parseDouble(display.getText());
            dot.setDisable(false);
            switch(operation)
            {
                case 1: //Addition
                    Double ans = data + secondOperand;
                    display.setText(String.valueOf(ans));
                    break;
                case 2: //Subtraction
                    ans = data - secondOperand;
                    display.setText(String.valueOf(ans));
                    break;
                case 3: //Multiplication
                    ans = data * secondOperand;
                    display.setText(String.valueOf(ans));
                    break;
                case 4: //Division
                    ans = 0d;
                    try{
                    ans = data / secondOperand;
                    }catch(Exception ex){display.setText("Error");}
                    display.setText(String.valueOf(ans));
                    break;
                case 5:
                    ans = data % secondOperand;
                    display.setText(String.valueOf(ans));
                    break;
                case 6:
                    ans = Math.pow(data, secondOperand);
                    display.setText(String.valueOf(ans));
                    break;

            }
            operation = -1;
            if(event.getSource() != divide && event.getSource() != add && event.getSource() != multi && event.getSource() != minus && event.getSource() != pow && event.getSource() != mod)
            {
                start = true;
            }
        }

我希望如果我输入 16,然后按平方根并得到 4。如果我按另一个数字,它会首先清除,然后显示输入的新值。

所以我想知道是否有另一种方法可以清除适用于科学按钮的内容。

最佳答案

实际上我遗漏了这行代码:

    display.setText("");

如果我把它放在'start'方法中,问题就解决了。

关于java - 在新值(value)出现之前先弄清楚科学按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57135460/

相关文章:

使用堆栈的 C 计算器。我想要这个计算器计算实数

java - FTPClient下载文件失败,retrieveFile()方法replyCode=550

java - 如何将我的 apache 项目设置为默认程序启动

java - 使用 red5.io 在运行时连接 mp4 文件

JavaFX 矩形不会接触右侧

javafx - 具有动态背景 JavaFX 的霜玻璃效果

assembly - 如何通过BIOS中断在实模式下处理键盘?

java - Spring 批处理作业状态配置为使用 prometheus 发出警报

JavaFX有没有办法包含PDF文件

java - 不确定是否使用两个变量执行计算