diff --git a/.idea/misc.xml b/.idea/misc.xml index 07115cd..0e05be0 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/demo/demo.iml b/demo/demo.iml index 6db0c46..c90834f 100644 --- a/demo/demo.iml +++ b/demo/demo.iml @@ -5,7 +5,7 @@ - + \ No newline at end of file diff --git a/demo/src/Main.java b/demo/src/Calculator.java similarity index 74% rename from demo/src/Main.java rename to demo/src/Calculator.java index 26c6c22..71a1548 100644 --- a/demo/src/Main.java +++ b/demo/src/Calculator.java @@ -1,6 +1,6 @@ import java.util.Scanner; -public class Main { +public class Calculator { // 加法 public static double add(double num1, double num2) { @@ -40,15 +40,32 @@ public class Main { // 输入第一个数 System.out.print("请输入第一个数: "); - double num1 = scanner.nextDouble(); + String num3 = scanner.nextLine(); + int num1; + try{ + num1=Integer.parseInt(num3); + }catch (NumberFormatException e){ + System.out.println("输入有误,请输入一个整数!"); + return; + } // 输入运算符 System.out.print("请输入运算符 (+, -, *, /, %): "); char operator = scanner.next().charAt(0); + if (!(operator == '+' || operator == '-' || operator == '*' || operator == '/' || operator == '%')) { + throw new IllegalArgumentException("无效的运算符"); + } // 输入第二个数 System.out.print("请输入第二个数: "); - double num2 = scanner.nextDouble(); + String num4 = scanner.nextLine(); + int num2; + try{ + num2=Integer.parseInt(num3); + }catch (NumberFormatException e){ + System.out.println("输入有误,请输入一个整数!"); + return; + } // 结果变量 double result = 0; diff --git a/demo/src/CalculatorApp.java b/demo/src/CalculatorApp.java new file mode 100644 index 0000000..e909209 --- /dev/null +++ b/demo/src/CalculatorApp.java @@ -0,0 +1,114 @@ +import javafx.application.Application; +import javafx.geometry.Insets; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.layout.GridPane; +import javafx.stage.Stage; + +public class CalculatorApp extends Application { + + private TextField num1Field = new TextField(); + private TextField num2Field = new TextField(); + private Label resultLabel = new Label(); + private Calculator calculator = new Calculator(); // 引入计算器逻辑类 + + public static void main(String[] args) { + launch(args); + } + + @Override + public void start(Stage primaryStage) { + primaryStage.setTitle("JavaFX Calculator"); + + // 创建布局 + GridPane grid = new GridPane(); + grid.setPadding(new Insets(10, 10, 10, 10)); + grid.setVgap(8); + grid.setHgap(10); + + // 第一个数 + Label num1Label = new Label("num1:"); + GridPane.setConstraints(num1Label, 0, 0); + GridPane.setConstraints(num1Field, 1, 0); + + // 第二个数 + Label num2Label = new Label("num2:"); + GridPane.setConstraints(num2Label, 0, 1); + GridPane.setConstraints(num2Field, 1, 1); + + // 结果标签 + Label resultText = new Label("结果:"); + GridPane.setConstraints(resultText, 0, 2); + GridPane.setConstraints(resultLabel, 1, 2); + + // 加法按钮 + Button addButton = new Button("+"); + addButton.setOnAction(e -> calculate('+')); + GridPane.setConstraints(addButton, 0, 3); + + // 减法按钮 + Button subtractButton = new Button("-"); + subtractButton.setOnAction(e -> calculate('-')); + GridPane.setConstraints(subtractButton, 1, 3); + + // 乘法按钮 + Button multiplyButton = new Button("*"); + multiplyButton.setOnAction(e -> calculate('*')); + GridPane.setConstraints(multiplyButton, 2, 3); + + // 除法按钮 + Button divideButton = new Button("/"); + divideButton.setOnAction(e -> calculate('/')); + GridPane.setConstraints(divideButton, 3, 3); + + // 取余按钮 + Button remainderButton = new Button("%"); + remainderButton.setOnAction(e -> calculate('%')); + GridPane.setConstraints(remainderButton, 4, 3); + + // 添加所有组件到布局中 + grid.getChildren().addAll(num1Label, num1Field, num2Label, num2Field, resultText, resultLabel, + addButton, subtractButton, multiplyButton, divideButton, remainderButton); + + // 创建场景并设置到窗口 + Scene scene = new Scene(grid, 400, 200); + primaryStage.setScene(scene); + primaryStage.show(); + } + + // 计算方法 + private void calculate(char operator) { + try { + double num1 = Double.parseDouble(num1Field.getText()); + double num2 = Double.parseDouble(num2Field.getText()); + double result = 0; + + switch (operator) { + case '+': + result = calculator.add(num1, num2); + break; + case '-': + result = calculator.subtract(num1, num2); + break; + case '*': + result = calculator.multiply(num1, num2); + break; + case '/': + result = calculator.divide(num1, num2); + break; + case '%': + result = calculator.remainder(num1, num2); + break; + } + + resultLabel.setText(String.valueOf(result)); + + } catch (NumberFormatException e) { + resultLabel.setText("Invalid Input"); + } catch (ArithmeticException e) { + resultLabel.setText(e.getMessage()); + } + } +} \ No newline at end of file diff --git a/out/production/demo/Calculator.class b/out/production/demo/Calculator.class new file mode 100644 index 0000000..6aae97a Binary files /dev/null and b/out/production/demo/Calculator.class differ diff --git a/out/production/demo/CalculatorApp.class b/out/production/demo/CalculatorApp.class new file mode 100644 index 0000000..59300cb Binary files /dev/null and b/out/production/demo/CalculatorApp.class differ