利用JAVA语言设计一个简单的科学计算器,实现加减乘除及开根号、对数、平方、三角正/余弦、求倒数、进制转换的简单功能。设计要求:由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以采用GUI来实现计算器,并采用Swing组件,AWT事件处理等实现具体功能。
时间: 2024-03-06 20:52:05 浏览: 14
这是一个简单的JAVA语言设计科学计算器的示例代码,实现了加减乘除、开根号、对数、平方、三角正/余弦、求倒数、进制转换等功能,采用了Swing组件和AWT事件处理实现。
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ScientificCalculator extends JFrame implements ActionListener {
private JTextField inputText;
private JButton addButton, subtractButton, multiplyButton, divideButton, sqrtButton, logButton, squareButton, sinButton, cosButton, reciprocalButton, convertButton;
private String operator = "";
private double number = 0;
private boolean start = true;
public ScientificCalculator() {
setTitle("科学计算器");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 300);
setLayout(new BorderLayout());
inputText = new JTextField();
inputText.setHorizontalAlignment(JTextField.RIGHT);
addButton = new JButton("+");
subtractButton = new JButton("-");
multiplyButton = new JButton("*");
divideButton = new JButton("/");
sqrtButton = new JButton("√");
logButton = new JButton("log");
squareButton = new JButton("x^2");
sinButton = new JButton("sin");
cosButton = new JButton("cos");
reciprocalButton = new JButton("1/x");
convertButton = new JButton("转换");
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(4, 3));
buttonPanel.add(addButton);
buttonPanel.add(subtractButton);
buttonPanel.add(multiplyButton);
buttonPanel.add(divideButton);
buttonPanel.add(sqrtButton);
buttonPanel.add(logButton);
buttonPanel.add(squareButton);
buttonPanel.add(sinButton);
buttonPanel.add(cosButton);
buttonPanel.add(reciprocalButton);
buttonPanel.add(convertButton);
addButton.addActionListener(this);
subtractButton.addActionListener(this);
multiplyButton.addActionListener(this);
divideButton.addActionListener(this);
sqrtButton.addActionListener(this);
logButton.addActionListener(this);
squareButton.addActionListener(this);
sinButton.addActionListener(this);
cosButton.addActionListener(this);
reciprocalButton.addActionListener(this);
convertButton.addActionListener(this);
add(inputText, BorderLayout.NORTH);
add(buttonPanel, BorderLayout.CENTER);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == addButton) {
calculate();
operator = "+";
start = true;
} else if (e.getSource() == subtractButton) {
calculate();
operator = "-";
start = true;
} else if (e.getSource() == multiplyButton) {
calculate();
operator = "*";
start = true;
} else if (e.getSource() == divideButton) {
calculate();
operator = "/";
start = true;
} else if (e.getSource() == sqrtButton) {
number = Double.parseDouble(inputText.getText());
inputText.setText(String.valueOf(Math.sqrt(number)));
} else if (e.getSource() == logButton) {
number = Double.parseDouble(inputText.getText());
inputText.setText(String.valueOf(Math.log10(number)));
} else if (e.getSource() == squareButton) {
number = Double.parseDouble(inputText.getText());
inputText.setText(String.valueOf(Math.pow(number, 2)));
} else if (e.getSource() == sinButton) {
number = Double.parseDouble(inputText.getText());
inputText.setText(String.valueOf(Math.sin(number)));
} else if (e.getSource() == cosButton) {
number = Double.parseDouble(inputText.getText());
inputText.setText(String.valueOf(Math.cos(number)));
} else if (e.getSource() == reciprocalButton) {
number = Double.parseDouble(inputText.getText());
inputText.setText(String.valueOf(1 / number));
} else if (e.getSource() == convertButton) {
String input = inputText.getText();
if (input.startsWith("0x")) {
int number = Integer.parseInt(input.substring(2), 16);
inputText.setText(String.valueOf(number));
} else if (input.startsWith("0b")) {
int number = Integer.parseInt(input.substring(2), 2);
inputText.setText(String.valueOf(number));
} else {
int number = Integer.parseInt(input);
inputText.setText(Integer.toHexString(number));
}
}
}
private void calculate() {
if (start) {
number = Double.parseDouble(inputText.getText());
start = false;
} else {
switch (operator) {
case "+":
number += Double.parseDouble(inputText.getText());
break;
case "-":
number -= Double.parseDouble(inputText.getText());
break;
case "*":
number *= Double.parseDouble(inputText.getText());
break;
case "/":
number /= Double.parseDouble(inputText.getText());
break;
}
}
inputText.setText(String.valueOf(number));
}
public static void main(String[] args) {
new ScientificCalculator();
}
}
```
该计算器实现了基本的加减乘除功能,以及开根号、对数、平方、三角正/余弦、求倒数、进制转换等科学计算功能。用户可以通过点击GUI界面上的按钮实现相应的功能。