第四次 #4

Merged
fdzcxy212206297 merged 0 commits from master into main 10 months ago

4
.idea/.gitignore vendored

@ -1,7 +1,7 @@
# 默认忽略的文件
# Default ignored files
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/

@ -1,11 +0,0 @@
<?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,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectDictionaryState">
<dictionary name="Administrator" />
</component>
</project>

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

@ -2,7 +2,7 @@
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/compute.iml" filepath="$PROJECT_DIR$/.idea/compute.iml" />
<module fileurl="file://$PROJECT_DIR$/double_team.iml" filepath="$PROJECT_DIR$/double_team.iml" />
</modules>
</component>
</project>

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

@ -1,2 +0,0 @@
# compute

@ -1,7 +1,9 @@
package compute;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class SimpleCalculator {
@ -10,128 +12,82 @@ public class SimpleCalculator {
private double num1;
private double num2;
private String operator;
private double memory; // Memory for M+, M-, MR, and MC functionality
public SimpleCalculator() {
frame = new JFrame("简单计算器");
inputField = new JTextField();
inputField.setEditable(false);
inputField.setHorizontalAlignment(SwingConstants.RIGHT);
inputField.setFont(new Font("Arial", Font.BOLD, 24));
inputField.setPreferredSize(new Dimension(400, 50));
inputField.setFont(new Font("Arial", Font.PLAIN, 24));
inputField.setHorizontalAlignment(JTextField.RIGHT);
// 创建按钮
JButton btn1 = createButton("1");
JButton btn2 = createButton("2");
JButton btn3 = createButton("3");
JButton btn4 = createButton("4");
JButton btn5 = createButton("5");
JButton btn6 = createButton("6");
JButton btn7 = createButton("7");
JButton btn8 = createButton("8");
JButton btn9 = createButton("9");
JButton btn0 = createButton("0");
JButton btnAdd = createButton("+");
JButton btnSubtract = createButton("-");
JButton btnMultiply = createButton("*");
JButton btnDivide = createButton("/");
JButton btnEqual = createButton("=");
JButton btnClear = createButton("C");
JButton btnDecimal = createButton(".");
JButton btnNegate = createButton("+/-");
JButton btnMPlus = createButton("M+");
JButton btnMMinus = createButton("M-");
JButton btnMR = createButton("MR");
JButton btnMC = createButton("MC");
JButton[] buttons = new JButton[16];
String[] buttonLabels = {"7", "8", "9", "/",
"4", "5", "6", "*",
"1", "2", "3", "-",
"C", "0", "=", "+"};
for (int i = 0; i < buttonLabels.length; i++) {
buttons[i] = new JButton(buttonLabels[i]);
buttons[i].setFont(new Font("Arial", Font.PLAIN, 24));
buttons[i].setFocusable(false);
buttons[i].setBackground(Color.LIGHT_GRAY);
buttons[i].setBorder(BorderFactory.createLineBorder(Color.GRAY));
final String label = buttonLabels[i];
buttons[i].addActionListener(e -> handleButtonClick(label));
}
// 设置布局
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(6, 4, 5, 5)); // 网格布局间距为5像素
panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
panel.add(btn7);
panel.add(btn8);
panel.add(btn9);
panel.add(btnDivide);
panel.add(btn4);
panel.add(btn5);
panel.add(btn6);
panel.add(btnMultiply);
panel.add(btn1);
panel.add(btn2);
panel.add(btn3);
panel.add(btnSubtract);
panel.add(btn0);
panel.add(btnDecimal);
panel.add(btnNegate);
panel.add(btnAdd);
panel.add(btnClear);
panel.add(btnEqual);
panel.add(btnMPlus);
panel.add(btnMMinus);
panel.add(btnMR);
panel.add(btnMC);
// 添加事件监听器
btn1.addActionListener(e -> appendToInputField("1"));
btn2.addActionListener(e -> appendToInputField("2"));
btn3.addActionListener(e -> appendToInputField("3"));
btn4.addActionListener(e -> appendToInputField("4"));
btn5.addActionListener(e -> appendToInputField("5"));
btn6.addActionListener(e -> appendToInputField("6"));
btn7.addActionListener(e -> appendToInputField("7"));
btn8.addActionListener(e -> appendToInputField("8"));
btn9.addActionListener(e -> appendToInputField("9"));
btn0.addActionListener(e -> appendToInputField("0"));
btnDecimal.addActionListener(e -> appendDecimal());
btnNegate.addActionListener(e -> negateValue());
btnAdd.addActionListener(e -> setOperator("+"));
btnSubtract.addActionListener(e -> setOperator("-"));
btnMultiply.addActionListener(e -> setOperator("*"));
btnDivide.addActionListener(e -> setOperator("/"));
btnEqual.addActionListener(e -> calculateResult());
btnClear.addActionListener(e -> clearInput());
btnMPlus.addActionListener(e -> memoryPlus());
btnMMinus.addActionListener(e -> memoryMinus());
btnMR.addActionListener(e -> memoryRecall());
btnMC.addActionListener(e -> memoryClear());
panel.setLayout(new GridLayout(4, 4, 10, 10));
for (JButton button : buttons) {
panel.add(button);
}
// 设置窗体
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 600); // 调整窗体大小
frame.setLayout(new BorderLayout(5, 5));
frame.setSize(400, 400);
frame.setLayout(new BorderLayout());
frame.add(inputField, BorderLayout.NORTH);
frame.add(panel, BorderLayout.CENTER);
frame.setVisible(true);
frame.setLocationRelativeTo(null); // 窗口居中
frame.addKeyListener(new KeyAdapter() { // 支持键盘输入
@Override
public void keyPressed(KeyEvent e) {
char keyChar = e.getKeyChar();
if (Character.isDigit(keyChar) || keyChar == '.' || "+-*/=".indexOf(keyChar) >= 0) {
handleButtonClick(String.valueOf(keyChar));
}
if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
clearInput();
}
}
});
}
private JButton createButton(String text) {
JButton button = new JButton(text);
button.setFont(new Font("Arial", Font.PLAIN, 18));
button.setPreferredSize(new Dimension(80, 80));
button.setBackground(Color.LIGHT_GRAY);
button.setFocusPainted(false);
return button;
private void handleButtonClick(String label) {
switch (label) {
case "C":
clearInput();
break;
case "=":
calculateResult();
break;
default:
if ("+-*/".contains(label)) {
setOperator(label);
} else {
appendToInputField(label);
}
break;
}
}
private void appendToInputField(String value) {
inputField.setText(inputField.getText() + value);
}
private void appendDecimal() {
if (!inputField.getText().contains(".")) {
inputField.setText(inputField.getText() + ".");
}
}
private void negateValue() {
if (!inputField.getText().isEmpty()) {
double value = Double.parseDouble(inputField.getText());
inputField.setText(String.valueOf(value * -1));
}
}
private void setOperator(String op) {
num1 = Double.parseDouble(inputField.getText());
operator = op;
@ -164,42 +120,16 @@ public class SimpleCalculator {
}
inputField.setText(String.valueOf(result));
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(frame, "错误:无效输入。");
JOptionPane.showMessageDialog(frame, "无效输入,请检查。");
}
}
private void clearInput() {
inputField.setText("");
num1 = 0;
num2 = 0;
num1 = num2 = 0;
operator = "";
}
private void memoryPlus() {
try {
memory += Double.parseDouble(inputField.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(frame, "错误:无效的输入。");
}
}
private void memoryMinus() {
try {
memory -= Double.parseDouble(inputField.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(frame, "错误:无效的输入。");
}
}
private void memoryRecall() {
inputField.setText(String.valueOf(memory));
}
private void memoryClear() {
memory = 0;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(SimpleCalculator::new);
}

Loading…
Cancel
Save