科学计算器的Java实现
生活随笔
收集整理的這篇文章主要介紹了
科学计算器的Java实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡易的科學計算器的實現
---Java版
1 import javax.swing.*;//新的窗口組件包
2 import java.awt.*;
3 import java.awt.event.*;
4 public class rf implements ActionListener
5 { JFrame jf=new JFrame();
6 boolean dotExist, operated, equaled; // 幫助運算的布爾變量
7 double result; // 目前的結果
8 char lastOperator; // 表示上一運算符
9 JTextField jtf; // 顯示欄
10 JButton dot, plus, minus, multi, div, sqrt, equal, change, clear,quyu; // 運算符
11 JButton[] numbers;
12 Panel p=new Panel();
13
14 public rf() // 構造者
15 {
16 jf.setTitle("簡易計算器");
17 // 初始化變量
18 dotExist = false; // 表示當前的數是否有小數點
19 operated = false; // 表示任意運算符是否被按下
20 equaled = false; // 表示等號是否被按下
21 result = 0;
22 lastOperator = '?';
23 // 初始化窗口變量
24 jtf = new JTextField("0");
25 jtf.setEditable(false); //設置文本框的可編輯性
26 jf.setSize(300,250);
27 jf.setVisible(true);
28 numbers = new JButton[10];
29 for (int i = 0; i < 10; i++)
30 numbers[i] = new JButton("" + i); //從0到9,,10個數字按鈕
31 dot = new JButton(".");
32 plus = new JButton("+");
33 minus = new JButton("-");
34
35 multi = new JButton("*");
36 div = new JButton("/");
37 sqrt = new JButton("√");
38 equal = new JButton("=");
39 change= new JButton("±");
40 clear = new JButton("NC"); //復位
41 quyu=new JButton("%");
42
43 p.setLayout(new GridLayout(5,4)); //繪制一個5行4列的布局管理器
44 p.add(numbers[1]); //把各個按鈕添加到布局管理器中
45 p.add(numbers[2]);
46 p.add(numbers[3]);
47 p.add(plus);
48 p.add(numbers[4]);
49 p.add(numbers[5]);
50 p.add(numbers[6]);
51 p.add(minus);
52 p.add(numbers[7]);
53 p.add(numbers[8]);
54 p.add(numbers[9]);
55 p.add(multi);
56 p.add(dot);
57 p.add(numbers[0]);
58 p.add(sqrt);
59 p.add(div);
60 p.add(quyu);
61 p.add(change);
62 p.add(clear);
63 p.add(equal);
64 jf.add(jtf,BorderLayout.NORTH); //把顯示框添加到北區也就是最上邊
65 jf.add(p,BorderLayout.CENTER); //把各個按鈕放到中區
66 numbers[0].addActionListener(this); //鼠標事件監聽器
67 numbers[1].addActionListener(this);
68 numbers[2].addActionListener(this);
69 numbers[3].addActionListener(this);
70 plus.addActionListener(this);
71 numbers[4].addActionListener(this);
72 numbers[5].addActionListener(this);
73 numbers[6].addActionListener(this);
74 minus.addActionListener(this);
75 numbers[7].addActionListener(this);
76 numbers[8].addActionListener(this);
77 numbers[9].addActionListener(this);
78 multi.addActionListener(this);
79 dot.addActionListener(this);
80 sqrt.addActionListener(this);
81 div.addActionListener(this);
82 equal.addActionListener(this);
83 change.addActionListener(this);
84 clear.addActionListener(this);
85 quyu.addActionListener(this);
86
87 }
88 // 對按鈕進行反應的方法
89 public void actionPerformed(ActionEvent e)
90 {
91 JButton btn = (JButton)e.getSource();
92 if (btn == clear)
93 {
94 jtf.setText("0");
95 dotExist = false; //小數點、運算符、等號、結果、上一個運算符
96 operated = false;
97 equaled = false;
98 result = 0;
99 lastOperator = '?';
100 }
101 else if (btn == equal)
102 {
103 operate('=');
104 equaled = true;
105 }
106 else if (btn == plus)
107 {
108 operate('+');
109 equaled = false;
110 }
111 else if (btn == minus)
112 {
113 operate('-');
114 equaled = false;
115 }
116 else if (btn == multi)
117 {
118 operate('*');
119 equaled = false;
120 }
121 else if (btn == div)
122 {
123 operate('/');
124 equaled = false;
125 }
126 else if (btn==quyu){
127 operate('%');
128 equaled=false;
129 }
130 else if (btn == change) //正負號
131 {
132 operate('±');
133 operate('=');
134 equaled = true;
135 }
136 else if (btn == sqrt)
137 {
138 operate('√');
139 operate('=');
140 equaled = true;
141 }
142 else
143 {
144 if (equaled)
145 result = 0;
146 for (int i = 0; i < 10; i++)
147 if (btn == numbers[i])
148 {
149 if (jtf.getText().equals("0"))
150 jtf.setText("" + i);
151 else if(! operated) //如果按下的不是運算符
152 jtf.setText(jtf.getText() + i);
153 else
154 {
155 jtf.setText("" + i);
156 operated = false;
157 }
158 }
159 if (btn == dot && ! dotExist)
160 {
161 jtf.setText(jtf.getText() + ".");
162
163 }
164 }
165 }
166 // 進行運算的方法
167 private void operate(char operator)
168 {
169 double currentNumber = Double.valueOf(jtf.getText()).doubleValue();
170 if (lastOperator == '?')
171 result = currentNumber;
172 else if (lastOperator == '+')
173 result += currentNumber;
174 else if (lastOperator == '-')
175 result -= currentNumber;
176 else if (lastOperator == '*')
177 result *= currentNumber;
178 else if (lastOperator == '/')
179 result /= currentNumber;
180 else if(lastOperator=='%')
181 result %=currentNumber;
182 else if (lastOperator == '±')
183 result *= -1;
184 else if (lastOperator == '√')
185 result = Math.sqrt(currentNumber);
186 else if (lastOperator == '=' && equaled)
187 result = currentNumber;
188
189 jtf.setText("" + result);
190 operated = true;
191 lastOperator = operator;
192 }
193
194 public static void main(String[] args)
195 {new rf(); } //創建了一個rf的實例
196 }
總結
以上是生活随笔為你收集整理的科学计算器的Java实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图灵奖得主(五)
- 下一篇: 美国正面临“人才泡沫”破裂危机?