package com.example.demo;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
public class HelloController {
@FXML
private TextField display;
private double firstNumber = 0;
private String operator = "";
private boolean start = true;
@FXML
protected void onDigitClick(ActionEvent event) {
if (start) {
display.setText("");
start = false;
}
String value = ((Button)event.getSource()).getText();
display.setText(display.getText() + value);
}
@FXML
protected void onOperatorClick(ActionEvent event) {
String value = ((Button)event.getSource()).getText();
if (!"=".equals(value)) {
if (!operator.isEmpty()) {
// Если оператор уже есть, можно добавить логику промежуточного вычисления
return;
}
operator = value;
try {
firstNumber = Double.parseDouble(display.getText());
start = true;
} catch (NumberFormatException e) {
display.setText("Ошибка");
start = true;
}
}
}
@FXML
protected void onClearClick() {
display.setText("");
operator = "";
start = true;
}
@FXML
protected void onResultClick() {
if (operator.isEmpty()) return;
try {
double secondNumber = Double.parseDouble(display.getText());
double result = 0;
switch (operator) {
case "+": result = firstNumber + secondNumber; break;
case "-": result = firstNumber - secondNumber; break;
case "*": result = firstNumber * secondNumber; break;
case "/":
if (secondNumber != 0) result = firstNumber / secondNumber;
else { display.setText("Деление на 0"); start = true; operator = ""; return; }
break;
}
display.setText(String.valueOf(result));
operator = "";
start = true;
} catch (NumberFormatException e) {
display.setText("Ошибка");
start = true;
operator = "";
}
}
}