在获得新价值之前清除科学按钮
Get Scientific Buttons Clear Before New Value
这可能与我的另一个问题重复:JavaFX Calculator Doesn't Clear After Answer
我用 Javafx/Java 做了一个科学计算器,但是 "Scientific" 按钮,例如 tan,或 cos,或平方根,在清除时有问题。加减乘除按钮工作正常。
Ex): 假设我做了 2 + 2,然后按下 = 得到 4。如果我按下另一个数字,它会先清除,而不是像这样添加到数字上:45 但是像这样:5 如果我按下 +/-/// 按钮,它当然也会清除文本区域,以便用户可以输入另一个数字。
Ex) 假设我做了 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;
}
}
这是 'start' 代码:
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'方法中,问题就解决了。
这可能与我的另一个问题重复:JavaFX Calculator Doesn't Clear After Answer
我用 Javafx/Java 做了一个科学计算器,但是 "Scientific" 按钮,例如 tan,或 cos,或平方根,在清除时有问题。加减乘除按钮工作正常。
Ex): 假设我做了 2 + 2,然后按下 = 得到 4。如果我按下另一个数字,它会先清除,而不是像这样添加到数字上:45 但是像这样:5 如果我按下 +/-/// 按钮,它当然也会清除文本区域,以便用户可以输入另一个数字。
Ex) 假设我做了 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;
}
}
这是 'start' 代码:
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'方法中,问题就解决了。