1、科学计算器源代码package two;import java.awt.*;import java*.swing.*;import java.awt.event.*;import java.io.*;import java.util.*;public class calculator implements ActionListener int count = 0; private static int a; JFrame frame = new JFrame(计算器); JTe*tArea area = new JTe*tArea(); JTe*tField fieldshow = new J
2、Te*tField(0); JTe*tField fieldcalculator = new JTe*tField(); JPanel leftpanel = new JPanel(); JPanel rightpanel = new JPanel(); JPanel buttonpanel = new JPanel(); JPanel motionpanel = new JPanel(); utton button1 = new utton(1); utton button2 = new utton(2); utton button3 = new utton(3); utton button
3、4 = new utton(+); utton button5 = new utton(c); utton button6 = new utton(4); utton button7 = new utton(5); utton button8 = new utton(6); utton button9 = new utton(-); utton button10 = new utton(退格); utton button11 = new utton(7); utton button12 = new utton(8); utton button13 = new utton(9); utton b
4、utton14 = new utton(*); utton button15 = new utton(sin); utton button16 = new utton(0); utton button17 = new utton(+/-); utton button18 = new utton(.); utton button19 = new utton(/); utton button20 = new utton(=); utton button21 = new utton(保存); utton button22 = new utton(复制); utton button23 = new u
5、tton(清除); StringBuffer S = new StringBuffer(); / t用来记录前一个运算符号是+ - * / =中的哪一个 char t; / count用来实现运算符号计数,a用来识别退格、正负号操作前一个操作是否是运算符号+ - * / sin = / int count = 0, a = 0; Double *1, *2 = 0d, result; public static void main(String a) calculator that = new calculator(); that.go(); void go() leftpanel.setLa
6、yout(new BorderLayout(); leftpanel.add(fieldshow, BorderLayout.NORTH); leftpanel.add(buttonpanel, BorderLayout.CENTER); buttonpanel.setLayout(new GridLayout(4, 5); buttonpanel.add(button1); buttonpanel.add(button2); buttonpanel.add(button3); buttonpanel.add(button4); buttonpanel.add(button5); button
7、panel.add(button6); buttonpanel.add(button7); buttonpanel.add(button8); buttonpanel.add(button9); buttonpanel.add(button10); buttonpanel.add(button11); buttonpanel.add(button12); buttonpanel.add(button13); buttonpanel.add(button14); buttonpanel.add(button15); buttonpanel.add(button16); buttonpanel.a
8、dd(button17); buttonpanel.add(button18); buttonpanel.add(button19); buttonpanel.add(button20); button1.addActionListener(this);/ 事件监听 button2.addActionListener(this); button3.addActionListener(this); button4.addActionListener(this); button5.addActionListener(this); button6.addActionListener(this); b
9、utton7.addActionListener(this); button8.addActionListener(this); button9.addActionListener(this); button10.addActionListener(this); button11.addActionListener(this); button12.addActionListener(this); button13.addActionListener(this); button14.addActionListener(this); button15.addActionListener(this)
10、; button16.addActionListener(this); button17.addActionListener(this); button18.addActionListener(this); button19.addActionListener(this); button20.addActionListener(this); button21.addActionListener(this); button22.addActionListener(this); button23.addActionListener(this); rightpanel.setLayout(new B
11、orderLayout(); rightpanel.add(fieldcalculator, BorderLayout.NORTH); rightpanel.add(area, BorderLayout.CENTER); rightpanel.add(motionpanel, BorderLayout.SOUTH); motionpanel.add(button21); motionpanel.add(button22); motionpanel.add(button23); Container con = frame.getContentPane(); frame.setLayout(new
12、 GridLayout(1, 2); con.add(leftpanel); con.add(rightpanel); frame.setBounds(200, 200, 600, 300); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.E*IT_ON_CLOSE); frame.addWindowListener(new WindowListener() / 关闭程序时弹出警告 public void windowClosing(WindowEvent e) int result = JOptionPane.sh
13、owConfirmDialog(frame, 确实要关闭程序吗, 警告, JOptionPane.OK_CANCEL_OPTION); if (result = JOptionPane.OK_CANCEL_OPTION) System.e*it(0); else public void windowOpened(WindowEvent e) public void windowIconified(WindowEvent e) public void windowDeiconified(WindowEvent e) public void windowDeactivated(WindowEven
14、t e) public void windowClosed(WindowEvent e) public void windowActivated(WindowEvent e) ); public void actionPerformed(ActionEvent e) / 0123456789等按钮 if (e.getSource() = button1 | e.getSource() = button2 | e.getSource() = button3 | e.getSource() = button6 | e.getSource() = button7 | e.getSource() =
15、button8 | e.getSource() = button11 | e.getSource() = button12 | e.getSource() = button13 | e.getSource() = button16) a = 0; if (count = 0) S.append(e.getActionmand(); fieldshow.setTe*t(S.toString(); *1 = Double.parseDouble(fieldshow.getTe*t(); else if (count = 1) S.append(e.getActionmand(); fieldsho
16、w.setTe*t(S.toString(); *2 = Double.parseDouble(fieldshow.getTe*t(); / 小数点的容错性 if (e.getSource() = button18)/ 单击.按钮输入小数 a = 0; if (fieldshow.getTe*t().trim().inde*Of(.) != -1)/ 判断字符串中是否已经包含了小数点 else/ 如果没有小数点 if (fieldshow.getTe*t().trim().equals(0)/ 如果初时显示为0 S.setLength(0); fieldshow.setTe*t(S.appen
17、d(0 + e.getActionmand() .toString(); else if (fieldshow.getTe*t().trim().equals()/ 如果初时显示为空则不做任何操作 else fieldshow .setTe*t(S.append(e.getActionmand().toString(); / 运算符号 + - * / if (e.getSource() = button4 | e.getSource() = button9 | e.getSource() = button14 | e.getSource() = button19) count+; a = 1;
18、 S.setLength(0); if (e.getSource() = button4)/ +法 switch (t) case +: result = *1 + *2; fieldshow.setTe*t(result.toString(); fieldcalculator.setTe*t(*1 + + + *2 + = + result); area.append(*1 + + + *2 + = + result + n); break; case -: result = *1 - *2; fieldshow.setTe*t(result.toString(); fieldcalcula
19、tor.setTe*t(*1 + + + *2 + = + result); area.append(*1 + - + *2 + = + result + n); break; case *: result = *1 * *2; fieldshow.setTe*t(result.toString(); fieldcalculator.setTe*t(*1 + + + *2 + = + result); area.append(*1 + * + *2 + = + result + n); break; case /: if (*2 = 0) fieldshow.setTe*t(除数不能为零);
20、else result = *1 / *2; fieldshow.setTe*t(result.toString(); fieldcalculator.setTe*t(*1 + + + *2 + = + result); area.append(*1 + / + *2 + = + result + n); break; case =: default: if (count = 2) *1 = result; t = +; if (e.getSource() = button9)/ -法 switch (t) case +: result = *1 + *2; fieldshow.setTe*t
21、(result.toString();fieldcalculator.setTe*t(*1 + + + *2 + = + result); area.append(*1 + + + *2 + = + result + n); break; case -: result = *1 - *2; fieldshow.setTe*t(result.toString(); fieldcalculator.setTe*t(*1 + - + *2 + = + result); area.append(*1 + - + *2 + = + result + n); break; case *: result =
22、 *1 * *2; fieldshow.setTe*t(result.toString(); fieldcalculator.setTe*t(*1 + * + *2 + = + result); area.append(*1 + * + *2 + = + result + n); break; case /: if (*2 = 0) fieldshow.setTe*t(除数不能为零); else result = *1 / *2; fieldshow.setTe*t(result.toString(); fieldcalculator.setTe*t(*1 + / + *2 + = + res
23、ult); area.append(*1 + / + *2 + = + result + n); break; case =: default: if (count = 2) *1 = result; t = -; if (e.getSource() = button14)/ *法 switch (t) case +: result = *1 + *2; fieldshow.setTe*t(result.toString(); fieldcalculator.setTe*t(*1 + + + *2 + = + result); area.append(*1 + + + *2 + = + res
24、ult + n); break; case -: result = *1 - *2; fieldshow.setTe*t(result.toString(); fieldcalculator.setTe*t(*1 + - + *2 + = + result); area.append(*1 + - + *2 + = + result + n); break; case *: result = *1 * *2; fieldshow.setTe*t(result.toString(); fieldcalculator.setTe*t(*1 + * + *2 + = + result); area.
25、append(*1 + * + *2 + = + result + n); break; case /: if (*2 = 0) fieldshow.setTe*t(除数不能为零); else result = *1 / *2; fieldshow.setTe*t(result.toString(); fieldcalculator.setTe*t(*1 + / + *2 + = + result); area.append(*1 + / + *2 + = + result + n); break; case =: default: if (count = 2) *1 = result; t
26、= *; if (e.getSource() = button19)/ /法 switch (t) case +: result = *1 + *2; fieldshow.setTe*t(result.toString(); fieldcalculator.setTe*t(*1 + + + *2 + = + result); area.append(*1 + + + *2 + = + result + n); break; case -: result = *1 - *2; fieldshow.setTe*t(result.toString(); fieldcalculator.setTe*t(*1 + - + *2 + = + result); area.append(*1 + - + *2 + = + result + n); break; case *: result = *1 * *2; fieldshow.setTe*t(result.toString(); fieldcalculator.setTe*t(*1 + * + *2 + = + result); area.append(*1 + * + *2 + = + result + n); break; case /: if (*2
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1