简易计算器01

main
陈奕衡 12 months ago
parent 47b8ebf0a1
commit f0d66eee75

@ -1,69 +1,100 @@
import java.util.Scanner; import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Calculator { public class Calculator extends Application {
// 加法 private TextField display;
public static double add(double num1, double num2) { private double result = 0;
return num1 + num2; private String lastCommand = "=";
} private boolean start = true;
@Override
public void start(Stage primaryStage) {
// 创建显示区域
display = new TextField("0");
display.setEditable(false);
display.setPrefColumnCount(15);
// 减法 // 创建按钮
public static double subtract(double num1, double num2) { GridPane grid = new GridPane();
return num1 - num2; grid.setPadding(new Insets(10));
} grid.setHgap(10);
grid.setVgap(10);
// 乘法 // 按钮布局
public static double multiply(double num1, double num2) { String[][] buttonLayout = {
return num1 * num2; {"7", "8", "9", "/"},
} {"4", "5", "6", "*"},
{"1", "2", "3", "-"},
{"0", ".", "=", "+"}
};
// 除法 for (int i = 0; i < 4; i++) {
public static double divide(double num1, double num2) { for (int j = 0; j < 4; j++) {
if (num2 == 0) { Button button = new Button(buttonLayout[i][j]);
throw new IllegalArgumentException("除数不能为零"); button.setOnAction(e -> processButtonPress(button.getText()));
grid.add(button, j, i);
} }
return num1 / num2;
} }
public static void main(String[] args) { // 创建主布局
Scanner scanner = new Scanner(System.in); VBox root = new VBox();
root.setPadding(new Insets(10));
System.out.println("请输入第一个数字:"); root.setSpacing(10);
double num1 = scanner.nextDouble(); root.getChildren().addAll(display, grid);
System.out.println("请输入第二个数字:"); // 创建场景
double num2 = scanner.nextDouble(); Scene scene = new Scene(root, 300, 300);
System.out.println("请选择操作 (+, -, *, /):"); // 设置舞台
String operator = scanner.next(); primaryStage.setTitle("简易计算器");
primaryStage.setScene(scene);
primaryStage.show();
}
double result; private void processButtonPress(String command) {
switch (operator) { if (command.matches("[0-9]")) {
case "+": if (start) {
result = add(num1, num2); display.setText(command);
break; start = false;
case "-": } else {
result = subtract(num1, num2); display.setText(display.getText() + command);
break; }
case "*": } else if (command.equals(".")) {
result = multiply(num1, num2); if (start) {
break; display.setText("0.");
case "/": start = false;
try { } else if (!display.getText().contains(".")) {
result = divide(num1, num2); display.setText(display.getText() + ".");
} catch (IllegalArgumentException e) { }
System.out.println(e.getMessage()); } else {
return; calculate(Double.parseDouble(display.getText()));
lastCommand = command;
start = true;
} }
break;
default:
System.out.println("无效的操作符");
return;
} }
System.out.println("结果: " + num1 + " " + operator + " " + num2 + " = " + result); private void calculate(double n) {
scanner.close(); if (lastCommand.equals("+")) {
result += n;
} else if (lastCommand.equals("-")) {
result -= n;
} else if (lastCommand.equals("*")) {
result *= n;
} else if (lastCommand.equals("/")) {
result /= n;
} else {
result = n;
} }
display.setText(String.format("%.0f", result));
} }
//hhhh public static void main(String[] args) {
launch(args);
}
}

Loading…
Cancel
Save