java实现计算器_初学JAVA之实现计算器
ManAndRunning
這學期 Java 就快結課了,上機課最后布置了幾個題,最后一題要求寫一個計算器有點意思,記錄一下。
需求:
設計一個在windows系統中可以使用的“計算器”窗口并實現(+、-,×,÷等)其功能。
實現計算器,首先要有一個窗口:
// 創建窗口
final JFrame jf = new JFrame("計算器");
// 流動布局,居中
jf.setLayout(new FlowLayout(1,5,5));
jf.setSize(293,251);
//
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// 不可以改變大小
jf.setResizable(false);
// 創建容器,存放顯示數字框和 C 按鈕
JPanel panel1 = new JPanel();
// 定義按鈕面板,并設置為網格布局,4行4列,組件水平、垂直間距均為3
JPanel panel2 = new JPanel(new GridLayout(4,4,1,1));
有了窗口容器,就要往里面添加組件了。計算器首先要有一個文本框來顯示數字,然后還要有數字按鈕,加減乘除小數點等號,最后還要一個刪除按鈕 C 。
然后一一添加即可。
// 創建文本域,放置輸入數據和結果
JTextArea text = new JTextArea(1,13);
// 設置字體
text.setFont(new Font(null, Font.PLAIN, 20));
// 設置大小
text.setPreferredSize(new Dimension(190,28));
// 不可編輯
text.setEditable(false);
panel1.add(text);
// 創建一個清除按鈕'C'
JButton btnC = new JButton("C");
btnC.setFont(new Font(null, Font.PLAIN, 20));
btnC.setPreferredSize(new Dimension(55,28));
panel1.add(btnC);
// 按鈕數組
String btn_str[] = {"1","2","3","/","4","5","6","*","7","8","9","-","0",".","=","+"};
JButton btn[] = new JButton[btn_str.length];
for(int i = 0 ; i < btn_str.length ; i++ ){
btn[i]=new JButton(btn_str[i]);
btn[i].setFont(new Font(null, Font.PLAIN, 20));
btn[i].setPreferredSize(new Dimension(70,42));
panel2.add(btn[i]);
}
這里通過循環創建按鈕數組。省時又省力,快樂好心情。
到這里面板內容就做好了,接下來就需要為每個按鈕添加功能。
先來看數字按鈕和運算符號按鈕:
// 按鈕功能
for(int i = 0 ; i < btn_str.length ; i++) {
if(i != 14) {
// 如果不是等于號
int j = i;
btn[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 獲取文本框內容
String textStr = text.getText();
// 如果有等號,清空文本框
if(textStr.indexOf("=") != -1) {
text.setText("");
}
// 獲取按鈕字符添加到文本框
String s = btn[j].getText();
text.append(s);
}
});
}else {
// 如果點擊等于號
btn[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
// 獲取文本框內容
String gongshi = text.getText();
// 計算公式
String jieguo = jse.eval(gongshi).toString();
// 如果結果字符串過長,只顯示等號和結果
if(jieguo.length() > 18) {
jieguo = jieguo.substring(jieguo.length()-16, jieguo.length());
text.setText("=");
text.append(jieguo);
}else {
text.append("=");
text.append(jieguo);
}
//如果出錯
} catch (Exception t) {
text.setText("");
}
}
});
}
}{ }// 皮皮狗子寫的!
i = 14 的時候呢,這個按鈕是 '=' 號,所有要區別對待一下。
用戶點擊按鈕的時候,獲取到按鈕上的字符,然后將該字符添加的文本框內,當用戶點擊等于號的時候進行計算。
這里計算的時候用到了這個方法。
String jieguo = jse.eval(gongshi).toString();
通過下面這條語句引入這個方法。
static ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");
通過這個方法可以自動將字符串類型的公式計算出結果,并且可以通過 try-catch 捕捉到錯誤。
接下來實現刪除鍵 C :
// C 鍵 功能
btnC.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String textStr = text.getText();
if(textStr.indexOf("=") != -1) {
text.setText("");
}else {
textStr = textStr.substring(0,(textStr.length() - 1));
text.setText(textStr);
}
}
});
最后將面板添加到窗口:
// 把 面板容器 設置到 窗口
// panel1 設置到頂部
jf.getContentPane().add(panel1,BorderLayout.NORTH);
// panel1 設置到底部
jf.getContentPane().add(panel2,BorderLayout.CENTER);
// 顯示窗口,前面創建的信息都在內存中,通過 jf.setVisible(true) 把內存中的窗口顯示在屏幕上。
jf.setVisible(true);
OK,一個簡單的計算器就完成了!
計算器
2018/6/12
總結
以上是生活随笔為你收集整理的java实现计算器_初学JAVA之实现计算器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CenterOs 防火墙设置
- 下一篇: css标签权重计算知识详解