1、Java编写计算器的几种常见的做法Java编写计算器的几种常见的做法.txt9母爱是一滴甘露,亲吻干涸的泥土,它用细雨的温情,用钻石的坚毅,期待着闪着碎光的泥土的肥沃;母爱不是人生中的一个凝固点,而是一条流动的河,这条河造就了我们生命中美丽的情感之景。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=fal
2、se; private char operator=; private Button btn=new Button15; public MyCalculator() initComponent(); private void initComponent() f = new Frame(My Calculator V1.0); f.setLayout(new BorderLayout(); /The frame uses BorderLayout f.addWindowListener(new WindowAdapter() public void windowClosing(WindowEve
3、nt evt) System.exit(0); ); Panel centerPanel = new Panel(); centerPanel.setLayout(new GridLayout(5, 3); /The panel uses GridLayout NumberListener nl=new NumberListener(); OperatorListener ol=new OperatorListener(); btn10=new Button(+); btn11=new Button(-); btn12=new Button(*); btn13=new Button(/); b
4、tn14=new Button(=); for (int i=0;i=9;i+) btni=new Button(String.valueOf(i); centerPanel.add(btni); btni.addActionListener(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); n
5、orthPanel.add(tf); f.add(northPanel, BorderLayout.NORTH); public void go() f.pack(); f.setVisible(true); public static void main(String args) new MyCalculator().go(); /* *采用成员内部类方式,实现监听器接口,方便访问主类内类内部成员。 *此类负责数字按钮Action事件监听和处理 */ class NumberListener implements ActionListener public void actionPerfor
6、med(ActionEvent e) if (!append) tf.setText(); append=true; String s=tf.getText(); s+=e.getActionCommand(); tf.setText(s); if (!btn10.isEnabled() for(int i=10;i=14;i+) btni.setEnabled(true); /* * 成员内部类,负责操作符按钮的事件处理 */ class OperatorListener implements ActionListener public void actionPerformed(Action
7、Event e) if (!append) return; for(int i=10;i=14;i+) btni.setEnabled(false); String s=tf.getText(); long num=Long.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) resul
8、t=0; else result/=num; break; case =:result=num;break; tf.setText(String.valueOf(result); /set the value of result 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 i
9、nput = new Scanner(System.in); System.out.println(*简易计算器*); System.out.println(*ttttt*); System.out.println(* 使用说明: 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.
10、equals(C) displayField.setText(0); start = true; else displayField.setText(displayField.getText() + input); private class CommandAction implements ActionListener public void actionPerformed(ActionEvent evt) String command = evt.getActionCommand(); if (start) lastCommand = command; else calculate(Dou
11、ble.parseDouble(displayField.getText(); lastCommand = command; start = true; public void calculate(double x) 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
12、.equals(=) result = x; displayField.setText( + result); public static void main(String args) Calculator calculator = new Calculator(); calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 第四种写法:package wanwa;import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calcula
13、tor extends JFrame private Container container; private GridBagLayout layout; private GridBagConstraints constraints; private JTextField displayField;/ 计算结果显示区 private String lastCommand;/ 保存+,-,*,/,=命令 private double result;/ 保存计算结果 private boolean start;/ 判断是否为数字的开始 public Calculator() super(Calcu
14、lator); container = getContentPane(); layout = new GridBagLayout(); container.setLayout(layout); constraints = new GridBagConstraints(); start = true; result = 0; lastCommand = =; displayField = new JTextField(20); displayField.setHorizontalAlignment(JTextField.RIGHT); constraints.gridx = 0; constra
15、ints.gridy = 0; constraints.gridwidth = 4; constraints.gridheight = 1; constraints.fill = GridBagConstraints.BOTH; constraints.weightx = 100; constraints.weighty = 100; layout.setConstraints(displayField, constraints); container.add(displayField); ActionListener insert = new InsertAction(); ActionLi
16、stener command = new CommandAction(); / addButton(Backspace, 0, 1, 2, 1, insert); / addButton(CE, 2, 1, 1, 1, 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,
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2