由于没有具体要求,我们可以采用简单的GUI界面来实现计算器。以下是一个简单的实现方式:
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
import javax.swing.*;
public class Calculator {
private JFrame frame;
private JTextField textField;
private JButton buttonAdd, buttonSubtract, buttonMultiply, buttonDivide, buttonEqual, buttonClear;
private int num1 = 0, num2 = 0; // 存储操作数
private String operator = ""; // 存储运算符
public Calculator() {
initialize();
}
private void initialize() {
frame = new JFrame("Calculator");
frame.setBounds(100, 100, 350, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
textField = new JTextField();
textField.setEditable(false); // 不允许手动输入内容
textField.setHorizontalAlignment(SwingConstants.RIGHT); // 右对齐
textField.setFont(new Font("Arial", Font.PLAIN, 20));
textField.setBounds(10, 10, 315, 50);
frame.getContentPane().add(textField);
textField.setColumns(10);
buttonAdd = new JButton("+");
buttonAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
handleOperator("+");
}
});
buttonAdd.setFont(new Font("Arial", Font.PLAIN, 20));
buttonAdd.setBounds(10, 70, 70, 50);
frame.getContentPane().add(buttonAdd);
buttonSubtract = new JButton("-");
buttonSubtract.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
handleOperator("-");
}
});
buttonSubtract.setFont(new Font("Arial", Font.PLAIN, 20));
buttonSubtract.setBounds(90, 70, 70, 50);
frame.getContentPane().add(buttonSubtract);
buttonMultiply = new JButton("*");
buttonMultiply.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
handleOperator("*");
}
});
buttonMultiply.setFont(new Font("Arial", Font.PLAIN, 20));
buttonMultiply.setBounds(170, 70, 70, 50);
frame.getContentPane().add(buttonMultiply);
buttonDivide = new JButton("/");
buttonDivide.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
handleOperator("/");
}
});
buttonDivide.setFont(new Font("Arial", Font.PLAIN, 20));
buttonDivide.setBounds(250, 70, 75, 50);
frame.getContentPane().add(buttonDivide);
buttonEqual = new JButton("=");
buttonEqual.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
calculate();
}
});
buttonEqual.setFont(new Font("Arial", Font.PLAIN, 20));
buttonEqual.setBounds(10, 140, 150, 50);
frame.getContentPane().add(buttonEqual);
buttonClear = new JButton("C");
buttonClear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
clear();
}
});
buttonClear.setFont(new Font("Arial", Font.PLAIN,20));buttonClear.setBounds(170,
,140);frame.getContentPane().add(buttonClear);}
// 处理运算符
private void handleOperator(String op) {
if (operator.equals(“”)) { // 如果当前没有存储运算符,则将当前操作数存储为num1,并清空文本框 num1 = Integer.parseInt(textField.getText()); textField.setText(“”); } else { // 如果已经存储了运算符,则先进行计算再将结果存储为num1 num2 = Integer.parseInt(textField.getText()); calculate(); } operator = op; // 存储当前的运算符 }
// 计算结果并显示在文本框中 private void calculate() { if (!operator.equals(“”) && !textField.getText().equals(“”)) { // 如果已经存储了运算符并且文本框中有内容 int result = 0; num2 = Integer.parseInt(textField.getText()); switch (operator) { // 根据当前运算符进行相应的计算 case “+”: result = num1 + num2; break; case “-”: result = num1 - num2; break; case “*”: result = num1 * num2;
break;
case "/":
if(num2==0){ // 防止除数为零的情况出现
textField.setText("Error");
return;
}
result=num1/num2;
break;
}
textField.setText(Integer.toString(result)); // 将计算结果转化为字符串并显示在文本框中
operator=""; // 清空当前存储的运算符
}
}
// 清空操作数和文本框中的内容
private void clear() {
num1 = 0;
num2 = 0;
operator = "";
textField.setText("");
}
public static void main(String[] args) {
Calculator window = new Calculator();
window.frame.setVisible(true);
}
}