1、Java编写计算器的几种常见的做法import java.awt.*;import java.awt.event.*;public class MyCalculator private Frame f; private TextField tf = new TextField(30); private long result; private boolean append=false; private char operator=; private Button btn=new Button15; public MyCalculator() initComponent(); private v
2、oid initComponent() f = new Frame(My Calculator V1.0); f.setLayout(new BorderLayout(); /The frame uses BorderLayout f.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent evt) System.exit(0); ); Panel centerPanel = new Panel(); centerPanel.setLayout(new GridLayout(5, 3); /The
3、panel uses GridLayout NumberListener nl=new NumberListener(); OperatorListener ol=new OperatorListener(); btn10=new Button(+); btn11=new Button(-); btn12=new Button(*); btn13=new Button(/); btn14=new Button(=); for (int i=0;i=9;i+) btni=new Button(String.valueOf(i); centerPanel.add(btni); btni.addAc
4、tionListener(nl); if (i%2=1) centerPanel.add(btn(i+19)/2); btn(i+19)/2.addActionListener(ol); f.add(centerPanel, BorderLayout.CENTER); Panel northPanel = new Panel(); tf.setEditable(false); northPanel.add(tf); f.add(northPanel, BorderLayout.NORTH); public void go() f.pack(); f.setVisible(true); publ
5、ic static void main(String args) new MyCalculator().go(); /* *采用成员内部类方式,实现监听器接口,方便访问主类内类内部成员。 *此类负责数字按钮Action事件监听和处理 */ class NumberListener implements ActionListener public void actionPerformed(ActionEvent e) if (!append) tf.setText(); append=true; String s=tf.getText(); s+=e.getActionCommand(); tf
6、.setText(s); if (!btn10.isEnabled() for(int i=10;i=14;i+) btni.setEnabled(true); /* * 成员内部类,负责操作符按钮的事件处理 */ class OperatorListener implements ActionListener public void actionPerformed(ActionEvent e) if (!append) return; for(int i=10;i=14;i+) btni.setEnabled(false); String s=tf.getText(); long num=L
7、ong.parseLong(s);/get the number of textfield append=false; /set append switch(operator) case +:result+=num;break; case -:result-=num;break; case *:result*=num;break; case /: if (num=0) result=0; else result/=num; break; case =:result=num;break; tf.setText(String.valueOf(result); /set the value of r
8、esult to textfield String op=e.getActionCommand(); operator=op.charAt(0); / set operator 方法2:package wanwa;import java.util.*; public class calc public static void main(String args) Scanner input = new Scanner(System.in); System.out.println(*简易计算器*); System.out.println(*ttttt*); System.out.println(*
9、 使用说明: 1.加法 2.减法 3.乘法 4.除法 *); System.out.println(*ttttt*); System.out.println(*); for(int i=0;i 0) displayField.setText(str.substring(0, str.length() - 1); else if (input.equals(CE) | input.equals(C) displayField.setText(0); start = true; else displayField.setText(displayField.getText() + input); p
10、rivate class CommandAction implements ActionListener public void actionPerformed(ActionEvent evt) String command = evt.getActionCommand(); if (start) lastCommand = command; else calculate(Double.parseDouble(displayField.getText(); lastCommand = command; start = true; public void calculate(double x)
11、if (lastCommand.equals(+) result += x; else if (lastCommand.equals(-) result -= x; else if (lastCommand.equals(*) result *= x; else if (lastCommand.equals(/) result /= x; else if (lastCommand.equals(=) result = x; displayField.setText( + result); public static void main(String args) Calculator calcu
12、lator = new Calculator(); calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 第四种写法:package wanwa;import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends JFrame private Container container; private GridBagLayout layout; private GridBagConstraints cons
13、traints; private JTextField displayField;/ 计算结果显示区 private String lastCommand;/ 保存+,-,*,/,=命令 private double result;/ 保存计算结果 private boolean start;/ 判断是否为数字的开始 public Calculator() super(Calculator); container = getContentPane(); layout = new GridBagLayout(); container.setLayout(layout); constraints
14、= new GridBagConstraints(); start = true; result = 0; lastCommand = =; displayField = new JTextField(20); displayField.setHorizontalAlignment(JTextField.RIGHT); constraints.gridx = 0; constraints.gridy = 0; constraints.gridwidth = 4; constraints.gridheight = 1; constraints.fill = GridBagConstraints.
15、BOTH; constraints.weightx = 100; constraints.weighty = 100; layout.setConstraints(displayField, constraints); container.add(displayField); ActionListener insert = new InsertAction(); ActionListener command = new CommandAction(); / addButton(Backspace, 0, 1, 2, 1, insert); / addButton(CE, 2, 1, 1, 1,
16、 insert); / addButton(C, 3, 1, 1, 1, insert); addButton(7, 0, 2, 1, 1, insert); addButton(8, 1, 2, 1, 1, insert); addButton(9, 2, 2, 1, 1, insert); addButton(/, 3, 2, 1, 1, command); addButton(4, 0, 3, 1, 1, insert); addButton(5, 1, 3, 1, 1, insert); addButton(6, 2, 3, 1, 1, insert); addButton(*, 3, 3, 1, 1, command); addButton(1, 0, 4, 1, 1, insert); addButton(2, 1,