【发布时间】:2021-07-25 17:39:05
【问题描述】:
我一直在尝试使用 JavaFX 制作一个简单的计算器,对此我很陌生。我有两个TextFields,其余按钮是+、-、*、/ 等运算符。问题是,每当我执行计算并按下等号时,结果都是零。计算器未对任何运算符执行计算。请帮助我,因为我无法理解为什么会发生这种情况。下面是Controller文件的代码。
package application;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.Button;
public class MainController {
@FXML
private Label result;
@FXML
private TextField num1, num2 ;
private String operator = "";
private int number1, number2;
//private boolean start = true;
private Model model = new Model();
@FXML
public void processNumbers(ActionEvent event) {
number1 = Integer.parseInt(num1.getText());
number2 = Integer.parseInt(num2.getText());
}
@FXML
public void processOperators(ActionEvent event) {
String value = ((Button) event.getSource()).getText();
if (!value.equals("?")) {
if (!operator.isEmpty())
return;
operator = value;
} else {
if (operator.isEmpty())
return;
int output = model.calculate(number1, number2, operator);
result.setText(String.valueOf(output));
operator = "";
//start = true;
}
}
}
【问题讨论】:
-
如果我理解的很好,当你进行操作并按下
=时,你输入processOperators(),你验证了第一个条件!value.equals("?")和operator不为空,所以唯一的动作由您的计算器执行的将是return;。我认为这就是为什么它没有使result.setText(...) -
谢谢。所以问题在于 if else 条件。我会检查并更新。