大家好,我是小夏,我来为大家解答以上问题。java计算器程序代码,java计算器源代码很多人还不知道,现在让我们一起来看看吧!
1、import java.awt.*;
2、import java.awt.event.*;
3、import javax.swing.*;
4、public class Calculator
5、{
6、 public static void main(String[] args)
7、 {
8、 CalculatorFrame frame=new CalculatorFrame();
9、 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
10、 frame.setVisible(true);
11、
12、 }
13、}
14、class CalculatorFrame extends JFrame
15、{
16、 public CalculatorFrame()
17、 {
18、
19、 setTitle("Calculator");
20、 CalculatorPanel panel=new CalculatorPanel();
21、 add(panel);
22、
23、 pack();
24、 }
25、
26、}
27、class CalculatorPanel extends Panel
28、{
29、 public CalculatorPanel()
30、 {
31、 setLayout(new BorderLayout());
32、 result=0;
33、 lastCommand="=";
34、 start=true;
35、 flag=true;
36、 display=new JButton("0");
37、 display.setEnabled(false);
38、 add(display,BorderLayout.NORTH);
39、 ActionListener insert=new InsertAction();
40、 ActionListener command=new CommandAction();
41、 panel=new JPanel();
42、 panel.setLayout(new GridLayout(4,5));
43、 addButton("7",insert);
44、 addButton("8",insert);
45、 addButton("9",insert);
46、 addButton("/",command);
47、 addButton("CE",command);
48、 addButton("4",insert);
49、 addButton("5",insert);
50、 addButton("6",insert);
51、 addButton("*",command);
52、 addButton("Backspace",command);
53、 addButton("1",insert);
54、 addButton("2",insert);
55、 addButton("3",insert);
56、 addButton("-",command);
57、 addButton("sqrt",command);
58、 addButton("0",insert);
59、 addButton(".",insert);
60、 addButton("=",command);
61、 addButton("+",command);
62、 addButton("1/x",command);
63、 add(panel,BorderLayout.CENTER);
64、 }
65、 private void addButton(String label,ActionListener listener)
66、 {
67、 JButton button=new JButton(label);
68、 button.addActionListener(listener);
69、 panel.add(button);
70、 }
71、 private class InsertAction implements ActionListener
72、 {
73、 public void actionPerformed(ActionEvent event)
74、 {
75、 String input=event.getActionCommand();
76、 if(start&&flag)
77、 {
78、 display.setText("");
79、 start=false;
80、 }
81、 if(flag)
82、 display.setText(display.getText()+input);
83、 }
84、 }
85、 private class CommandAction implements ActionListener
86、 {
87、 public void actionPerformed(ActionEvent event)
88、 {
89、 String command=event.getActionCommand();
90、 if(command.equals("CE"))
91、 {
92、 display.setText("0");
93、 start=true;
94、 flag=true;
95、 command="=";
96、 }
97、 else
98、 if(start&&flag)
99、 {
100、 if(command.equals("-"))
101、 {
102、 display.setText(command);
103、 start=false;
104、 }
105、 else
106、 if((command.equals("1/x")||command.equals("sqrt"))&&flag)
107、 calculate(Double.parseDouble(display.getText()),command);
108、 else
109、 if(flag)
110、 lastCommand=command;
111、 }
112、 else
113、 {
114、 if(command.equals("Backspace")&&flag)
115、 {
116、 String s=display.getText();
117、 char[] s1=s.toCharArray();
118、 if(s.length()>=2)
119、 {
120、 String s2=new String(s1,0,s.length()-1);
121、 display.setText(s2);
122、 }
123、 else
124、 {
125、 display.setText("0");
126、 start=true;
127、 }
128、 }
129、 else if(flag)
130、 {
131、 calculate(Double.parseDouble(display.getText()),command);
132、 lastCommand=command;
133、 start=true;
134、 }
135、 }
136、}
137、}
138、public void calculate(double x,String command)
139、{
140、 if(lastCommand.equals("+")) result+=x;
141、 else if(lastCommand.equals("-")) result-=x;
142、 else if(lastCommand.equals("/"))
143、 {
144、 if(x!=0)
145、 result/=x;
146、 else
147、 {
148、 display.setText("除数不能为0");
149、 start=false;
150、 flag=false;
151、 return;
152、 }
153、 }
154、 else if(lastCommand.equals("*")) result*=x;
155、 else if(command.equals("1/x"))
156、 {
157、 if(x!=0)
158、 result=1/x;
159、 else
160、 {
161、 display.setText("除数不能为0");
162、 start=false;
163、 flag=false;
164、 return;
165、 }
166、 }
167、 else if(command.equals("sqrt"))
168、 {
169、 if(x>=0)
170、 result=Math.sqrt(x);
171、 else
172、 {
173、 display.setText("函数输入无效");
174、 start=false;
175、 flag=false;
176、 return;
177、 }
178、 }
179、 else if(lastCommand.equals("=")) result=x;
180、 display.setText(""+result);
181、}
182、 private JButton display;
183、 private JPanel panel;
184、 private double result;
185、 private String lastCommand;
186、 private boolean start;
187、 private boolean flag;
188、}
本文到此讲解完毕了,希望对大家有帮助。