From cedee39f3bea64b7d87d141a4cea49d093ac32c5 Mon Sep 17 00:00:00 2001
From: fdzcxy212206425 <1242115333@qq.com>
Date: Thu, 10 Oct 2024 14:15:46 +0800
Subject: [PATCH 01/15] Initial commit
---
README.md | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 README.md
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..35e2497
--- /dev/null
+++ b/README.md
@@ -0,0 +1,2 @@
+# Caculator
+
--
2.34.1
From 340bea724fceb5910ed994b60fbaa444b4142616 Mon Sep 17 00:00:00 2001
From: luth1ng <2165085073@qq.com>
Date: Thu, 10 Oct 2024 14:33:34 +0800
Subject: [PATCH 02/15] test
---
.gitignore | 29 +++++++++++++++++++++++++++++
.idea/.gitignore | 3 +++
.idea/misc.xml | 6 ++++++
.idea/modules.xml | 8 ++++++++
.idea/vcs.xml | 6 ++++++
demoForCaculator.iml | 11 +++++++++++
src/Main.java | 5 +++++
7 files changed, 68 insertions(+)
create mode 100644 .gitignore
create mode 100644 .idea/.gitignore
create mode 100644 .idea/misc.xml
create mode 100644 .idea/modules.xml
create mode 100644 .idea/vcs.xml
create mode 100644 demoForCaculator.iml
create mode 100644 src/Main.java
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f68d109
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,29 @@
+### IntelliJ IDEA ###
+out/
+!**/src/main/**/out/
+!**/src/test/**/out/
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+bin/
+!**/src/main/**/bin/
+!**/src/test/**/bin/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..0548357
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..5d9ee31
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demoForCaculator.iml b/demoForCaculator.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/demoForCaculator.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Main.java b/src/Main.java
new file mode 100644
index 0000000..3e59c38
--- /dev/null
+++ b/src/Main.java
@@ -0,0 +1,5 @@
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("Hello world!");
+ }
+}
\ No newline at end of file
--
2.34.1
From bc3ce395cbee95fe6e757c4456a55c7fdf8d4e30 Mon Sep 17 00:00:00 2001
From: luth1ng <2165085073@qq.com>
Date: Thu, 10 Oct 2024 14:46:20 +0800
Subject: [PATCH 03/15] test2
---
src/Main.java | 63 ++++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 60 insertions(+), 3 deletions(-)
diff --git a/src/Main.java b/src/Main.java
index 3e59c38..d3899b5 100644
--- a/src/Main.java
+++ b/src/Main.java
@@ -1,5 +1,62 @@
+import java.util.Scanner;
public class Main {
public static void main(String[] args) {
- System.out.println("Hello world!");
- }
-}
\ No newline at end of file
+ Scanner scanner = new Scanner(System.in);
+ while (true) {
+ System.out.println("请输入第一个数字(或输入 'exit' 退出):");
+ String input1 = scanner.nextLine();
+ if (input1.equalsIgnoreCase("exit")) {
+ break;
+ }
+
+ System.out.println("请输入运算符 (+, -, *, /, %):");
+ String operator = scanner.nextLine();
+
+ System.out.println("请输入第二个数字:");
+ String input2 = scanner.nextLine();
+
+ try {
+ double number1 = Double.parseDouble(input1);
+ double number2 = Double.parseDouble(input2);
+ double result = 0;
+
+ switch (operator) {
+ case "+":
+ result = number1 + number2;
+ break;
+ case "-":
+ result = number1 - number2;
+ break;
+ case "*":
+ result = number1 * number2;
+ break;
+ case "/":
+ if (number2 != 0) {
+ result = number1 / number2;
+ } else {
+ System.out.println("错误:除数不能为零。");
+ continue;
+ }
+ break;
+ case "%":
+ if (number2 != 0) {
+ result = number1 % number2;
+ } else {
+ System.out.println("错误:除数不能为零。");
+ continue;
+ }
+ break;
+ default:
+ System.out.println("错误:不支持的运算符。");
+ continue;
+ }
+
+ System.out.printf("结果: %.2f%n", result);
+ } catch (NumberFormatException e) {
+ System.out.println("错误:请输入有效的数字.");
+ }
+ }
+
+ scanner.close();
+ System.out.println("计算器已退出。");
+ }}
\ No newline at end of file
--
2.34.1
From 1186ea0c69f7743514ca02a09472a54d9d08c3f6 Mon Sep 17 00:00:00 2001
From: luth1ng <2165085073@qq.com>
Date: Thu, 10 Oct 2024 14:48:14 +0800
Subject: [PATCH 04/15] test3
---
src/Caculator.java | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 src/Caculator.java
diff --git a/src/Caculator.java b/src/Caculator.java
new file mode 100644
index 0000000..10b4bbd
--- /dev/null
+++ b/src/Caculator.java
@@ -0,0 +1,2 @@
+public class Caculator {
+}
--
2.34.1
From f856c02b3aa5f0b53dd22d060c437e1b927e8bc9 Mon Sep 17 00:00:00 2001
From: luth1ng <2165085073@qq.com>
Date: Thu, 10 Oct 2024 14:49:18 +0800
Subject: [PATCH 05/15] test3
---
src/Caculator.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/Caculator.java b/src/Caculator.java
index 10b4bbd..904f15a 100644
--- a/src/Caculator.java
+++ b/src/Caculator.java
@@ -1,2 +1,5 @@
public class Caculator {
+ public static void main(String[] args) {
+ System.out.println("hello world" );
+ }
}
--
2.34.1
From 6155d9854f6012afc039c835e4dd157f550cb507 Mon Sep 17 00:00:00 2001
From: fdzcxy212206425 <1242115333@qq.com>
Date: Thu, 10 Oct 2024 14:15:46 +0800
Subject: [PATCH 06/15] Initial commit
---
README.md | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 README.md
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..35e2497
--- /dev/null
+++ b/README.md
@@ -0,0 +1,2 @@
+# Caculator
+
--
2.34.1
From 6f0ef0f7cf38acf94c74cdd767fd21b385629dcc Mon Sep 17 00:00:00 2001
From: xiaer <1242115333@qq.com>
Date: Thu, 10 Oct 2024 15:21:45 +0800
Subject: [PATCH 07/15] test
---
src/demo.java | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 src/demo.java
diff --git a/src/demo.java b/src/demo.java
new file mode 100644
index 0000000..3e7ac07
--- /dev/null
+++ b/src/demo.java
@@ -0,0 +1,5 @@
+public class demo {
+ public static void main(String[] args) {
+ System.out.println("askha");
+ }
+}
--
2.34.1
From 5fd975323186460496fbecde0daa22a7eb000520 Mon Sep 17 00:00:00 2001
From: xiaer <1242115333@qq.com>
Date: Thu, 10 Oct 2024 15:29:39 +0800
Subject: [PATCH 08/15] caculator for fxml
---
src/Caculator.fxml | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
create mode 100644 src/Caculator.fxml
diff --git a/src/Caculator.fxml b/src/Caculator.fxml
new file mode 100644
index 0000000..9c64b78
--- /dev/null
+++ b/src/Caculator.fxml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--
2.34.1
From 1be3d8b923d925827492adee9fabde52827065d6 Mon Sep 17 00:00:00 2001
From: luth1ng <2165085073@qq.com>
Date: Thu, 10 Oct 2024 15:35:19 +0800
Subject: [PATCH 09/15] CaculatorForController
---
src/CalculatorController.java | 55 +++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)
create mode 100644 src/CalculatorController.java
diff --git a/src/CalculatorController.java b/src/CalculatorController.java
new file mode 100644
index 0000000..929ff72
--- /dev/null
+++ b/src/CalculatorController.java
@@ -0,0 +1,55 @@
+import javafx.fxml.FXML;
+import javafx.scene.control.TextField;
+
+public class CalculatorController {
+
+ @FXML
+ private TextField inputField;
+
+ private double result = 0;
+ private String operator = "";
+ private boolean calculating = true;
+
+ @FXML
+ protected void handleButtonAction(javafx.event.ActionEvent event) {
+ String command = event.getSource().toString().split("#")[1];
+ if (command.equals("C")) {
+ inputField.clear();
+ operator = "";
+ result = 0;
+ calculating = true;
+ } else if (command.equals("=")) {
+ calculate(Double.parseDouble(inputField.getText()));
+ operator = "";
+ calculating = true;
+ } else if (command.equals("+") || command.equals("-") || command.equals("*") || command.equals("/")) {
+ calculate(Double.parseDouble(inputField.getText()));
+ operator = command;
+ calculating = false;
+ } else {
+ if (calculating) {
+ inputField.clear();
+ calculating = false;
+ }
+ inputField.setText(inputField.getText() + command);
+ }
+ }
+
+ private void calculate(double x) {
+ switch (operator) {
+ case "+":
+ result += x;
+ break;
+ case "-":
+ result -= x;
+ break;
+ case "*":
+ result *= x;
+ break;
+ case "/":
+ result /= x;
+ break;
+ }
+ inputField.setText("" + result);
+ }
+}
\ No newline at end of file
--
2.34.1
From 863ab0d241e306c1172f2aad911d32adbd363ecf Mon Sep 17 00:00:00 2001
From: xiaer <1242115333@qq.com>
Date: Thu, 10 Oct 2024 16:17:22 +0800
Subject: [PATCH 10/15] caculator for fxml
---
src/Caculator.fxml | 33 +++++++--------------------------
1 file changed, 7 insertions(+), 26 deletions(-)
diff --git a/src/Caculator.fxml b/src/Caculator.fxml
index 9c64b78..4247d33 100644
--- a/src/Caculator.fxml
+++ b/src/Caculator.fxml
@@ -1,36 +1,17 @@
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
\ No newline at end of file
--
2.34.1
From 6e1969466c755a6600bdb994f97e5503619bdaf6 Mon Sep 17 00:00:00 2001
From: xiaer <1242115333@qq.com>
Date: Thu, 10 Oct 2024 16:19:28 +0800
Subject: [PATCH 11/15] caculator for start
---
src/Caculator.java | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/src/Caculator.java b/src/Caculator.java
index 904f15a..557f765 100644
--- a/src/Caculator.java
+++ b/src/Caculator.java
@@ -1,5 +1,24 @@
-public class Caculator {
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Scene;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+
+import java.net.URL;
+
+public class Caculator extends Application {
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ URL url = getClass().getResource("Caculator.fxml");
+ VBox root = FXMLLoader.load(url);
+ Scene scene = new Scene(root);
+ primaryStage.setScene(scene);
+ primaryStage.setTitle("模拟计算器");
+ primaryStage.show();
+ }
+
public static void main(String[] args) {
- System.out.println("hello world" );
+ launch(args);
}
}
--
2.34.1
From afeaf639fe4b5e8360d2393de25d9caa900f918c Mon Sep 17 00:00:00 2001
From: fdzcxy212206425 <1242115333@qq.com>
Date: Thu, 10 Oct 2024 16:21:33 +0800
Subject: [PATCH 12/15] Delete 'src/Main.java'
---
src/Main.java | 62 ---------------------------------------------------
1 file changed, 62 deletions(-)
delete mode 100644 src/Main.java
diff --git a/src/Main.java b/src/Main.java
deleted file mode 100644
index d3899b5..0000000
--- a/src/Main.java
+++ /dev/null
@@ -1,62 +0,0 @@
-import java.util.Scanner;
-public class Main {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- while (true) {
- System.out.println("请输入第一个数字(或输入 'exit' 退出):");
- String input1 = scanner.nextLine();
- if (input1.equalsIgnoreCase("exit")) {
- break;
- }
-
- System.out.println("请输入运算符 (+, -, *, /, %):");
- String operator = scanner.nextLine();
-
- System.out.println("请输入第二个数字:");
- String input2 = scanner.nextLine();
-
- try {
- double number1 = Double.parseDouble(input1);
- double number2 = Double.parseDouble(input2);
- double result = 0;
-
- switch (operator) {
- case "+":
- result = number1 + number2;
- break;
- case "-":
- result = number1 - number2;
- break;
- case "*":
- result = number1 * number2;
- break;
- case "/":
- if (number2 != 0) {
- result = number1 / number2;
- } else {
- System.out.println("错误:除数不能为零。");
- continue;
- }
- break;
- case "%":
- if (number2 != 0) {
- result = number1 % number2;
- } else {
- System.out.println("错误:除数不能为零。");
- continue;
- }
- break;
- default:
- System.out.println("错误:不支持的运算符。");
- continue;
- }
-
- System.out.printf("结果: %.2f%n", result);
- } catch (NumberFormatException e) {
- System.out.println("错误:请输入有效的数字.");
- }
- }
-
- scanner.close();
- System.out.println("计算器已退出。");
- }}
\ No newline at end of file
--
2.34.1
From 7d8256ed247fedb57fc704a74d1b5de92ab1639c Mon Sep 17 00:00:00 2001
From: fdzcxy212206425 <1242115333@qq.com>
Date: Thu, 10 Oct 2024 16:21:44 +0800
Subject: [PATCH 13/15] Delete 'src/demo.java'
---
src/demo.java | 5 -----
1 file changed, 5 deletions(-)
delete mode 100644 src/demo.java
diff --git a/src/demo.java b/src/demo.java
deleted file mode 100644
index 3e7ac07..0000000
--- a/src/demo.java
+++ /dev/null
@@ -1,5 +0,0 @@
-public class demo {
- public static void main(String[] args) {
- System.out.println("askha");
- }
-}
--
2.34.1
From defd340dcb4b43c92441e595d929529658f98680 Mon Sep 17 00:00:00 2001
From: luth1ng <2165085073@qq.com>
Date: Fri, 11 Oct 2024 13:55:51 +0800
Subject: [PATCH 14/15] CaculatorForController
---
src/CalculatorController.java | 94 +++++++++++++++++++----------------
1 file changed, 52 insertions(+), 42 deletions(-)
diff --git a/src/CalculatorController.java b/src/CalculatorController.java
index 929ff72..4d8abe8 100644
--- a/src/CalculatorController.java
+++ b/src/CalculatorController.java
@@ -1,55 +1,65 @@
import javafx.fxml.FXML;
-import javafx.scene.control.TextField;
+import javafx.scene.control.*;
+import javafx.scene.layout.HBox;
public class CalculatorController {
@FXML
- private TextField inputField;
+ private TextField number1Field;
- private double result = 0;
- private String operator = "";
- private boolean calculating = true;
+ @FXML
+ private ChoiceBox operatorChoiceBox;
@FXML
- protected void handleButtonAction(javafx.event.ActionEvent event) {
- String command = event.getSource().toString().split("#")[1];
- if (command.equals("C")) {
- inputField.clear();
- operator = "";
- result = 0;
- calculating = true;
- } else if (command.equals("=")) {
- calculate(Double.parseDouble(inputField.getText()));
- operator = "";
- calculating = true;
- } else if (command.equals("+") || command.equals("-") || command.equals("*") || command.equals("/")) {
- calculate(Double.parseDouble(inputField.getText()));
- operator = command;
- calculating = false;
- } else {
- if (calculating) {
- inputField.clear();
- calculating = false;
- }
- inputField.setText(inputField.getText() + command);
- }
+ private TextField number2Field;
+
+ @FXML
+ private Label resultLabel;
+
+ @FXML
+ public void initialize() {
+ // 初始化运算符下拉菜单
+ operatorChoiceBox.getItems().addAll("+", "-", "*", "/", "%");
}
- private void calculate(double x) {
- switch (operator) {
- case "+":
- result += x;
- break;
- case "-":
- result -= x;
- break;
- case "*":
- result *= x;
- break;
- case "/":
- result /= x;
- break;
+ @FXML
+ protected void handleCalculateAction() {
+ try {
+ double number1 = Double.parseDouble(number1Field.getText());
+ double number2 = Double.parseDouble(number2Field.getText());
+ String operator = operatorChoiceBox.getValue();
+
+ double result = 0;
+ switch (operator) {
+ case "+":
+ result = number1 + number2;
+ break;
+ case "-":
+ result = number1 - number2;
+ break;
+ case "*":
+ result = number1 * number2;
+ break;
+ case "/":
+ if (number2 != 0) {
+ result = number1 / number2;
+ } else {
+ throw new ArithmeticException("Division by zero");
+ }
+ break;
+ case "%":
+ if (number2 != 0) {
+ result = number1 % number2;
+ } else {
+ throw new ArithmeticException("Division by zero");
+ }
+ break;
+ default:
+ throw new IllegalArgumentException("Invalid operator");
+ }
+ resultLabel.setText(String.valueOf(result));
+ } catch (Exception e) {
+ resultLabel.setText("Error: " + e.getMessage());
}
- inputField.setText("" + result);
}
}
\ No newline at end of file
--
2.34.1
From 79ab379eddad2bf8bb23a0b1fa61473064873a9d Mon Sep 17 00:00:00 2001
From: xiaer <1242115333@qq.com>
Date: Sun, 13 Oct 2024 12:28:51 +0800
Subject: [PATCH 15/15] caculator for change
---
src/Caculator.fxml | 4 +-
src/CalculatorController.java | 94 +++++++++++++++++++----------------
2 files changed, 54 insertions(+), 44 deletions(-)
diff --git a/src/Caculator.fxml b/src/Caculator.fxml
index 4247d33..ad7428e 100644
--- a/src/Caculator.fxml
+++ b/src/Caculator.fxml
@@ -8,9 +8,9 @@
-
+
-
+
diff --git a/src/CalculatorController.java b/src/CalculatorController.java
index 929ff72..4d8abe8 100644
--- a/src/CalculatorController.java
+++ b/src/CalculatorController.java
@@ -1,55 +1,65 @@
import javafx.fxml.FXML;
-import javafx.scene.control.TextField;
+import javafx.scene.control.*;
+import javafx.scene.layout.HBox;
public class CalculatorController {
@FXML
- private TextField inputField;
+ private TextField number1Field;
- private double result = 0;
- private String operator = "";
- private boolean calculating = true;
+ @FXML
+ private ChoiceBox operatorChoiceBox;
@FXML
- protected void handleButtonAction(javafx.event.ActionEvent event) {
- String command = event.getSource().toString().split("#")[1];
- if (command.equals("C")) {
- inputField.clear();
- operator = "";
- result = 0;
- calculating = true;
- } else if (command.equals("=")) {
- calculate(Double.parseDouble(inputField.getText()));
- operator = "";
- calculating = true;
- } else if (command.equals("+") || command.equals("-") || command.equals("*") || command.equals("/")) {
- calculate(Double.parseDouble(inputField.getText()));
- operator = command;
- calculating = false;
- } else {
- if (calculating) {
- inputField.clear();
- calculating = false;
- }
- inputField.setText(inputField.getText() + command);
- }
+ private TextField number2Field;
+
+ @FXML
+ private Label resultLabel;
+
+ @FXML
+ public void initialize() {
+ // 初始化运算符下拉菜单
+ operatorChoiceBox.getItems().addAll("+", "-", "*", "/", "%");
}
- private void calculate(double x) {
- switch (operator) {
- case "+":
- result += x;
- break;
- case "-":
- result -= x;
- break;
- case "*":
- result *= x;
- break;
- case "/":
- result /= x;
- break;
+ @FXML
+ protected void handleCalculateAction() {
+ try {
+ double number1 = Double.parseDouble(number1Field.getText());
+ double number2 = Double.parseDouble(number2Field.getText());
+ String operator = operatorChoiceBox.getValue();
+
+ double result = 0;
+ switch (operator) {
+ case "+":
+ result = number1 + number2;
+ break;
+ case "-":
+ result = number1 - number2;
+ break;
+ case "*":
+ result = number1 * number2;
+ break;
+ case "/":
+ if (number2 != 0) {
+ result = number1 / number2;
+ } else {
+ throw new ArithmeticException("Division by zero");
+ }
+ break;
+ case "%":
+ if (number2 != 0) {
+ result = number1 % number2;
+ } else {
+ throw new ArithmeticException("Division by zero");
+ }
+ break;
+ default:
+ throw new IllegalArgumentException("Invalid operator");
+ }
+ resultLabel.setText(String.valueOf(result));
+ } catch (Exception e) {
+ resultLabel.setText("Error: " + e.getMessage());
}
- inputField.setText("" + result);
}
}
\ No newline at end of file
--
2.34.1