Надо написать калькулятор на JavaFX, обрабатывающий все арифметические операции, но в моем коде результаты операций по какой-то причине не отображаются в метке OutputOfCalc. Раньше я использовал метод getValue() для получения текущего элемента из ComboBox, но это не работало и заменил метод на getSelectionModel(), и всё равно не работает. В чем может быть причина?
@FXML public void clc() { Double z = 0.0; Double x = Double.parseDouble(this.TextFieldX.getText()); Double y = Double.parseDouble(this.TextFieldY.getText());
switch (operator) { case "+": z = x + y; break; case "-": z = x - y; break; case "*": z = x * y; break; case "/": if (y != 0) { z = x / y; } else { this.OutputOfCalc.setText("Ошибка: Делить на ноль нельзя!"); return; } break; case "^": z = Math.pow(x, y); break; } this.OutputOfCalc.setText(z.toString()); } }
Код
import java.net .URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
public class CalculatorController implements Initializable {
@FXML
private TextField TextFieldX;
@FXML
private ComboBox<String> ComboOperetor;
@FXML
private TextField TextFieldY;
@FXML
private Label OutputOfCalc;
@Override
public void initialize(URL url, ResourceBundle rb) {
this.ComboOperetor.getItems().addAll("+", "-", "*", "/", "^");
this.ComboOperetor.getSelectionModel().selectFirst();
}
@FXML
public void clc() {
Double z = 0.0;
Double x = Double.parseDouble(this.TextFieldX.getText());
Double y = Double.parseDouble(this.TextFieldY.getText());
String operator = this.ComboOperetor.getSelectionModel().getSelectedItem();
switch (operator) {
case "+":
z = x + y;
break;
case "-":
z = x - y;
break;
case "*":
z = x * y;
break;
case "/":
if (y != 0) {
z = x / y;
} else {
this.OutputOfCalc.setText("Ошибка: Делить на ноль нельзя!");
return;
}
break;
case "^":
z = Math.pow(x, y);
break;
}
this.OutputOfCalc.setText(z.toString());
}
}