Merge remote-tracking branch 'origin/main'

# Conflicts:
#	_02/src/Calculator.java
main
方鹏 12 months ago
commit e45c82da4b

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />

@ -3,6 +3,7 @@
<component name="ProjectModuleManager"> <component name="ProjectModuleManager">
<modules> <modules>
<module fileurl="file://$PROJECT_DIR$/.idea/UML实践作业.iml" filepath="$PROJECT_DIR$/.idea/UML实践作业.iml" /> <module fileurl="file://$PROJECT_DIR$/.idea/UML实践作业.iml" filepath="$PROJECT_DIR$/.idea/UML实践作业.iml" />
<module fileurl="file://$PROJECT_DIR$/_01/_01.iml" filepath="$PROJECT_DIR$/_01/_01.iml" />
<module fileurl="file://$PROJECT_DIR$/_02/_02.iml" filepath="$PROJECT_DIR$/_02/_02.iml" /> <module fileurl="file://$PROJECT_DIR$/_02/_02.iml" filepath="$PROJECT_DIR$/_02/_02.iml" />
</modules> </modules>
</component> </component>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

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

Loading…
Cancel
Save