这可能与我的其他问题重复: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/