在新价值之前清除科学按钮



这可能是我另一个问题的重复:JavaFX计算器在回答后不清除

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

例如:假设我做了 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("");

如果我把它放在"开始"方法中,问题就会得到解决。

最新更新