Java源码
Java计算器源码
本文档使用 MrDoc 发布
-
+
首页
Java计算器源码
```.java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Main extends JFrame implements ActionListener { private final JTextField tFormula; private final JTextField tResult; StringBuffer str; String operator; double x, y, result; private final JButton[] b = new JButton[12]; private final JButton bDivision; private final JButton bBack; private final JButton bMultiplication; private final JButton bEmpty; private final JButton bAddition; private final JButton bSqrt; private final JButton bSubtraction; private final JButton bEquals; public Main() { super("计算器"); Container c = getContentPane(); tFormula = new JTextField(20); tFormula.setHorizontalAlignment(JTextField.LEFT); tFormula.setEditable(false); tResult = new JTextField(20); tResult.setHorizontalAlignment(JTextField.LEFT); tResult.setEditable(false); JLabel label = new JLabel("欢迎使用计算器 | by Rainbow_Cakjew"); label.setForeground(Color.BLUE); str = new StringBuffer(); JPanel pInfo = new JPanel(); pInfo.add(label); pInfo.add(tFormula); pInfo.add(tResult); pInfo.setLayout(new GridLayout(3, 1)); for (int i = 0; i < 10; i++) { String s = "" + i; b[i] = new JButton(s); b[i].addActionListener(this); } b[10] = new JButton("%"); b[11] = new JButton("."); bDivision = new JButton("/"); bBack = new JButton("<-"); bMultiplication = new JButton("*"); bEmpty = new JButton("C"); bAddition = new JButton("+"); bSqrt = new JButton("Sqrt"); bSubtraction = new JButton("-"); bEquals = new JButton("="); for (int i = 0; i < 12; i++) { b[i].setForeground(Color.blue); } bDivision.setForeground(Color.red); bMultiplication.setForeground(Color.red); bAddition.setForeground(Color.red); bSubtraction.setForeground(Color.red); bBack.setForeground(Color.blue); bEmpty.setForeground(Color.blue); bSqrt.setForeground(Color.red); bEquals.setForeground(Color.blue); JPanel pButton = new JPanel(); pButton.add(bEmpty); pButton.add(bBack); pButton.add(bSqrt); pButton.add(bAddition); pButton.add(b[7]); pButton.add(b[8]); pButton.add(b[9]); pButton.add(bSubtraction); pButton.add(b[4]); pButton.add(b[5]); pButton.add(b[6]); pButton.add(bMultiplication); pButton.add(b[1]); pButton.add(b[2]); pButton.add(b[3]); pButton.add(bDivision); pButton.add(b[10]); pButton.add(b[0]); pButton.add(b[11]); pButton.add(bEquals); pButton.setLayout(new GridLayout(5, 4, 5, 5)); b[10].addActionListener(this); b[11].addActionListener(this); bDivision.addActionListener(this); bBack.addActionListener(this); bMultiplication.addActionListener(this); bEmpty.addActionListener(this); bAddition.addActionListener(this); bSqrt.addActionListener(this); bSubtraction.addActionListener(this); bEquals.addActionListener(this); c.add(pInfo); c.add(pButton); c.setLayout(new FlowLayout()); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setVisible(true); setResizable(false); setSize(300, 290); setLocation(100, 100); } public static void main() { new Main(); } public void actionPerformed(ActionEvent e) { try { if (e.getSource() == bEmpty) { tFormula.setText("0"); tResult.setText("0"); str.setLength(0); } else if (e.getSource() == bBack) { if (str.length() > 1) { str.deleteCharAt(str.length() - 1); tFormula.setText(str.toString()); } else { tFormula.setText("0"); str.setLength(0); } } else if (e.getSource() == bSqrt) { x = Double.parseDouble((tFormula.getText().trim())); if (x < 0) { tFormula.setText("数字格式异常"); } else { tResult.setText("" + Math.sqrt(x)); } str.setLength(0); } else if (e.getSource() == b[10]) { x = Double.parseDouble((tFormula.getText()).trim()); tResult.setText((x / 100) + ""); str.setLength(0); } else if (e.getSource() == bEquals) { arithmetic(str.toString()); str.setLength(0); } else if (e.getSource() == bAddition || e.getSource() == bSubtraction || e.getSource() == bMultiplication || e.getSource() == bDivision) { if (!str.isEmpty()) { operator = e.getActionCommand(); x = Double.parseDouble(str.toString()); str.setLength(0); } } else if (e.getSource() == b[11]) { if (str.isEmpty()) { str.append("0."); } else if (str.indexOf(".") == -1) { str.append("."); } tFormula.setText(str.toString()); } else { if (tFormula.getText().equals("0")) { str.setLength(0); } str.append(e.getActionCommand()); tFormula.setText(str.toString()); } } catch (NumberFormatException ex) { tFormula.setText("数字格式错误"); str.setLength(0); } catch (StringIndexOutOfBoundsException ex) { tFormula.setText("操作错误"); str.setLength(0); } } private void arithmetic(String s) { try { if (operator != null) { y = Double.parseDouble(s); switch (operator) { case "+": result = x + y; break; case "-": result = x - y; break; case "*": result = x * y; break; case "/": if (y == 0) { tResult.setText("除数不能为0"); return; } result = x / y; break; } tResult.setText(String.valueOf(result)); operator = null; } } catch (NumberFormatException ex) { tResult.setText("数字格式错误"); } } } ```
Rainbow_Cakjew
2025年4月19日 13:40
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码