请写一段java代码,实现计算器功能,其中,一个页面输入要计算的数和运算符,另一个页面显示运算结果
时间: 2024-12-04 16:25:14 浏览: 13
在Java中,我们可以创建一个简单的命令模式来实现这个计算器功能,这里我将展示一个基础的文本界面模拟,假设我们有两个窗口,一个是用户输入界面InputWindow,另一个是结果显示窗口ResultWindow。我们将运算逻辑封装在一个Calculator类中。
```java
// Calculator.java
public class Calculator {
private String input;
public void setInput(String numAndOperator) {
this.input = numAndOperator;
}
public double calculate() {
// 这里只是一个简单示例,实际的解析需要处理更复杂的情况
String[] parts = input.split(" ");
if (parts.length != 3 || !Character.isDigit(parts[0].charAt(0)) || !"+".equals(parts[1]) || !Character.isDigit(parts[2].charAt(0))) {
throw new IllegalArgumentException("Invalid input format");
}
return Double.parseDouble(parts[0]) + Double.parseDouble(parts[2]);
}
}
// InputWindow.java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class InputWindow {
private Calculator calculator;
private JTextField textField;
private JButton buttonCalculate;
public InputWindow(Calculator calc) {
calculator = calc;
textField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String input = textField.getText();
calculator.setInput(input);
ResultWindow.getInstance().displayResult(calculator.calculate());
}
});
buttonCalculate.setText("Calculate");
}
}
// ResultWindow.java
import javax.swing.JLabel;
public class ResultWindow {
private static volatile ResultWindow instance = null;
private JLabel resultLabel;
public static ResultWindow getInstance() {
if (instance == null) {
synchronized (ResultWindow.class) {
if (instance == null) {
instance = new ResultWindow();
}
}
}
return instance;
}
public void displayResult(double result) {
resultLabel.setText("Result: " + result);
}
}
```
在这个例子中,`InputWindow`监听用户的输入,然后调用`Calculator`的`calculate`方法并传递结果到`ResultWindow`显示。这只是一个非常基础的实现,实际应用中会涉及到更多的错误处理和复杂计算。
阅读全文