让我来详细讲解一下“Java编写简单计算器的完整实现过程”的攻略。
1. 编写UI界面
首先,我们需要用Java编写一个简单的UI界面,作为计算器的操作界面。可以使用Swing或JavaFX等框架。
以下是一个使用Swing框架实现的示例代码:
import javax.swing.*;
import java.awt.*;
public class CalculatorUI extends JFrame {
private JTextField textField;
private JButton[] btns;
public CalculatorUI() {
setTitle("Calculator");
// 创建文本框,并设置不可编辑
textField = new JTextField("0");
textField.setEditable(false);
textField.setHorizontalAlignment(JTextField.RIGHT);
// 创建数字按钮
String[] buttonTexts = {"7", "8", "9", "4", "5", "6", "1", "2", "3", "0", ".", "="};
btns = new JButton[buttonTexts.length];
for (int i = 0; i < buttonTexts.length; i++) {
btns[i] = new JButton(buttonTexts[i]);
}
// 设置数字按钮的布局
// 注意:这里使用了网格布局
JPanel btnPanel = new JPanel(new GridLayout(4, 3));
for (JButton btn : btns) {
btnPanel.add(btn);
}
// 将文本框和数字按钮添加到窗口
Container contentPane = getContentPane();
contentPane.add(textField, BorderLayout.NORTH);
contentPane.add(btnPanel, BorderLayout.CENTER);
pack();
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public JTextField getTextField() {
return textField;
}
public JButton[] getBtns() {
return btns;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new CalculatorUI().setVisible(true);
});
}
}
2. 实现计算器逻辑
接下来,我们需要实现计算器的逻辑,在用户输入数字和运算符后,计算并输出结果。
以下是一个简单的计算器逻辑实现示例:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CalculatorLogic implements ActionListener {
private CalculatorUI ui;
private String operator = "";
private double num1 = 0;
private double num2 = 0;
private boolean isFirstInput = true;
private boolean hasDot = false;
public CalculatorLogic(CalculatorUI ui) {
this.ui = ui;
for (JButton btn : ui.getBtns()) {
btn.addActionListener(this);
}
}
@Override
public void actionPerformed(ActionEvent e) {
String text = ui.getTextField().getText();
String cmd = e.getActionCommand();
boolean isNumber = false;
try {
Double.parseDouble(cmd);
isNumber = true;
} catch (NumberFormatException ex) {
}
if (isNumber) {
if (isFirstInput) {
if (cmd.equals(".")) {
ui.getTextField().setText("0" + cmd);
hasDot = true;
} else {
ui.getTextField().setText(cmd);
}
isFirstInput = false;
} else {
if (cmd.equals(".")) {
if (!hasDot) {
ui.getTextField().setText(text + cmd);
hasDot = true;
}
} else {
ui.getTextField().setText(text + cmd);
}
}
} else {
if (cmd.equals("=")) {
num2 = Double.parseDouble(text);
double result = calculate();
ui.getTextField().setText(String.valueOf(result));
num1 = 0;
num2 = 0;
operator = "";
isFirstInput = true;
hasDot = false;
} else {
if (num1 == 0) {
num1 = Double.parseDouble(text);
operator = cmd;
isFirstInput = true;
hasDot = false;
} else {
num2 = Double.parseDouble(text);
double result = calculate();
num1 = result;
operator = cmd;
isFirstInput = true;
hasDot = false;
ui.getTextField().setText(String.valueOf(result));
}
}
}
}
private double calculate() {
switch (operator) {
case "+":
return num1 + num2;
case "-":
return num1 - num2;
case "*":
return num1 * num2;
case "/":
return num1 / num2;
default:
return 0;
}
}
}
3. 启动计算器
最后,我们将UI和逻辑组合起来,启动计算器。
以下是启动计算器的示例代码:
public class Calculator {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
CalculatorUI ui = new CalculatorUI();
CalculatorLogic logic = new CalculatorLogic(ui);
ui.setVisible(true);
});
}
}
至此,完整实现过程已经结束。你可以运行这个程序,看看实现结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java编写简单计算器的完整实现过程 - Python技术站