编写Java程序设计一个九宫格计算器界面,可实现加减乘除含小数点运算
时间: 2024-01-27 10:05:57 浏览: 107
jisuanqi.rar_加减乘除C语言_可重复使用
好的,这是一个比较复杂的问题,需要分步骤来完成。我会尽力帮你解决。
首先,我们需要设计一个九宫格的界面,可以使用Java Swing库来实现。这个界面需要包含数字按钮、运算符按钮、清除按钮、小数点按钮、等号按钮和显示屏幕。你可以使用GridLayout布局管理器来实现这个九宫格。
接下来,我们需要设计计算器的逻辑。这个逻辑需要包含加、减、乘、除等运算符的处理,以及小数点的处理。可以使用字符串来存储算式,并使用Java的BigDecimal类来进行精确计算。
最后,我们需要将界面和逻辑结合起来。可以使用Java的事件监听器来监听按钮的点击事件,并根据不同的按钮来执行不同的逻辑操作。
下面是一个简单的示例代码,仅供参考:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.math.*;
public class Calculator extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTextField screen;
private boolean newNumber = true;
private String lastOp = "=";
private BigDecimal result = new BigDecimal("0");
public Calculator() {
super("Calculator");
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(4, 4, 5, 5));
String[] buttonLabels = {"7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+"};
for (String label : buttonLabels) {
JButton button = new JButton(label);
button.addActionListener(this);
buttonPanel.add(button);
}
screen = new JTextField("0");
screen.setEditable(false);
screen.setHorizontalAlignment(JTextField.RIGHT);
screen.setFont(new Font("Arial", Font.PLAIN, 20));
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(screen, BorderLayout.NORTH);
contentPane.add(buttonPanel, BorderLayout.CENTER);
pack();
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
String input = e.getActionCommand();
if (newNumber) {
screen.setText(input);
newNumber = false;
} else {
screen.setText(screen.getText() + input);
}
if (input.equals(".")) {
// do nothing
} else if (input.equals("+")) {
calculate();
lastOp = "+";
newNumber = true;
} else if (input.equals("-")) {
calculate();
lastOp = "-";
newNumber = true;
} else if (input.equals("*")) {
calculate();
lastOp = "*";
newNumber = true;
} else if (input.equals("/")) {
calculate();
lastOp = "/";
newNumber = true;
} else if (input.equals("=")) {
calculate();
lastOp = "=";
newNumber = true;
}
}
private void calculate() {
BigDecimal number = new BigDecimal(screen.getText());
if (lastOp.equals("+")) {
result = result.add(number);
} else if (lastOp.equals("-")) {
result = result.subtract(number);
} else if (lastOp.equals("*")) {
result = result.multiply(number);
} else if (lastOp.equals("/")) {
result = result.divide(number, 10, RoundingMode.HALF_UP);
} else if (lastOp.equals("=")) {
result = number;
}
screen.setText(result.toString());
}
public static void main(String[] args) {
Calculator calc = new Calculator();
calc.setVisible(true);
}
}
```
这个程序可以实现一个简单的九宫格计算器,支持加、减、乘、除和小数点等运算。你可以根据需要进行修改和扩展。
阅读全文