java计算器,支持2、8、10进制,采用btnBin.setBounds,切换进制时清空。
时间: 2024-03-06 07:51:15 浏览: 61
计算器 java
好的,下面是一个简单的Java计算器代码,它支持2、8、10进制,并且可以切换进制时清空已输入的内容。需要注意的是,这个代码只是一个简单的示例,如果您需要更加完善的计算器功能,还需要进行更多的开发工作。
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTextField display;
private JButton button0, button1, button2, button3, button4, button5, button6, button7, button8, button9;
private JButton buttonAdd, buttonSub, buttonMul, buttonDiv, buttonEqual, buttonDot, buttonClear;
private JButton buttonBin, buttonOct, buttonDec;
private int operator = 0;
private double temp = 0.0;
private boolean clearFlag = false;
private int radix = 10;
public Calculator() {
super("Calculator");
Container container = getContentPane();
container.setLayout(new BorderLayout());
display = new JTextField("0");
display.setEditable(false);
display.setHorizontalAlignment(JTextField.RIGHT);
container.add(display, BorderLayout.NORTH);
JPanel panelButton = new JPanel();
panelButton.setLayout(new GridLayout(5, 4));
button7 = new JButton("7");
panelButton.add(button7);
button7.addActionListener(this);
button8 = new JButton("8");
panelButton.add(button8);
button8.addActionListener(this);
button9 = new JButton("9");
panelButton.add(button9);
button9.addActionListener(this);
buttonAdd = new JButton("+");
panelButton.add(buttonAdd);
buttonAdd.addActionListener(this);
buttonBin = new JButton("Bin");
panelButton.add(buttonBin);
buttonBin.addActionListener(this);
buttonBin.setBounds(5, 160, 60, 20);
button4 = new JButton("4");
panelButton.add(button4);
button4.addActionListener(this);
button5 = new JButton("5");
panelButton.add(button5);
button5.addActionListener(this);
button6 = new JButton("6");
panelButton.add(button6);
button6.addActionListener(this);
buttonSub = new JButton("-");
panelButton.add(buttonSub);
buttonSub.addActionListener(this);
buttonOct = new JButton("Oct");
panelButton.add(buttonOct);
buttonOct.addActionListener(this);
button1 = new JButton("1");
panelButton.add(button1);
button1.addActionListener(this);
button2 = new JButton("2");
panelButton.add(button2);
button2.addActionListener(this);
button3 = new JButton("3");
panelButton.add(button3);
button3.addActionListener(this);
buttonMul = new JButton("*");
panelButton.add(buttonMul);
buttonMul.addActionListener(this);
buttonDec = new JButton("Dec");
panelButton.add(buttonDec);
buttonDec.addActionListener(this);
button0 = new JButton("0");
panelButton.add(button0);
button0.addActionListener(this);
buttonDot = new JButton(".");
panelButton.add(buttonDot);
buttonDot.addActionListener(this);
buttonClear = new JButton("C");
panelButton.add(buttonClear);
buttonClear.addActionListener(this);
buttonDiv = new JButton("/");
panelButton.add(buttonDiv);
buttonDiv.addActionListener(this);
buttonEqual = new JButton("=");
panelButton.add(buttonEqual);
buttonEqual.addActionListener(this);
container.add(panelButton, BorderLayout.CENTER);
setSize(300, 300);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String input = e.getActionCommand();
if (input.equals("0") || input.equals("1") || input.equals("2") || input.equals("3") || input.equals("4")
|| input.equals("5") || input.equals("6") || input.equals("7") || input.equals("8")
|| input.equals("9") || input.equals(".")) {
if (clearFlag) {
display.setText("");
clearFlag = false;
}
display.setText(display.getText() + input);
} else if (input.equals("+")) {
temp = Double.parseDouble(display.getText());
operator = 1;
clearFlag = true;
} else if (input.equals("-")) {
temp = Double.parseDouble(display.getText());
operator = 2;
clearFlag = true;
} else if (input.equals("*")) {
temp = Double.parseDouble(display.getText());
operator = 3;
clearFlag = true;
} else if (input.equals("/")) {
temp = Double.parseDouble(display.getText());
operator = 4;
clearFlag = true;
} else if (input.equals("=")) {
double num = Double.parseDouble(display.getText());
switch (operator) {
case 1:
temp += num;
break;
case 2:
temp -= num;
break;
case 3:
temp *= num;
break;
case 4:
temp /= num;
break;
default:
temp = num;
break;
}
display.setText(String.valueOf(temp));
clearFlag = true;
} else if (input.equals("C")) {
display.setText("0");
clearFlag = true;
} else if (input.equals(".")) {
if (clearFlag) {
display.setText("");
clearFlag = false;
}
if (display.getText().indexOf(".") == -1) {
display.setText(display.getText() + ".");
}
} else if (input.equals("Bin")) {
radix = 2;
display.setText("0");
clearFlag = true;
} else if (input.equals("Oct")) {
radix = 8;
display.setText("0");
clearFlag = true;
} else if (input.equals("Dec")) {
radix = 10;
display.setText("0");
clearFlag = true;
}
if (radix != 10) {
try {
int num = Integer.parseInt(display.getText(), radix);
display.setText(Integer.toString(num, radix));
} catch (NumberFormatException ex) {
display.setText("0");
}
}
}
public static void main(String[] args) {
Calculator calculator = new Calculator();
calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
```
在这个代码中,我们定义了一个名为 Calculator 的类,它继承自 JFrame,表示这是一个窗口应用程序。在这个类中,我们定义了各种按钮和文本框,以及一些变量和方法,用于计算和显示计算结果。
在 actionPerformed 方法中,我们处理了各种按钮的事件。当用户点击数字按钮或小数点按钮时,我们将输入添加到文本框中。当用户点击运算符按钮时,我们将当前输入的数字存储在 temp 变量中,并将运算符存储在 operator 变量中。当用户点击等号按钮时,我们根据运算符计算结果,并将结果显示在文本框中。当用户点击清空按钮时,我们将文本框的内容设置为 0。当用户点击进制转换按钮时,我们根据按钮的名称设置不同的进制,并将文本框的内容清空。
在计算结果时,我们需要注意当前的进制,如果当前进制不是 10 进制,我们需要先将输入的字符串转换成对应的整数,然后再将计算结果转换成对应的字符串。我们可以使用 Integer 类的 parseInt 和 toString 方法来实现这个功能。
需要注意的是,我们在代码中使用了 btnBin.setBounds 方法设置按钮的位置和大小,这是一种比较原始的布局方式,不太推荐。在实际开发中,我们可以使用更加灵活和方便的布局管理器来实现界面的布局。
阅读全文