java计算器源代码.docx

上传人:牧羊曲112 文档编号:3159665 上传时间:2023-03-11 格式:DOCX 页数:18 大小:38.88KB
返回 下载 相关 举报
java计算器源代码.docx_第1页
第1页 / 共18页
java计算器源代码.docx_第2页
第2页 / 共18页
java计算器源代码.docx_第3页
第3页 / 共18页
java计算器源代码.docx_第4页
第4页 / 共18页
java计算器源代码.docx_第5页
第5页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《java计算器源代码.docx》由会员分享,可在线阅读,更多相关《java计算器源代码.docx(18页珍藏版)》请在三一办公上搜索。

1、java计算器源代码java版计算器源代码:import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;import java.awt.*;import java.math.BigDecimal;import java.math.MathContext;import java.math.RoundingMode;import java.awt.Color;/* java版计算器*/public class Calculator extends JFrame final i

2、nt WIN_W = 250, WIN_H = 250;JPanel myPanel, panelSuper;public Calculator / 主面板panelSuper = new JPanel;panelSuper.setLayout(null);/ 设置窗口位置double width = Toolkit.getDefaultToolkit.getScreenSize.width;double height = Toolkit.getDefaultToolkit.getScreenSize.height;this.setBounds(int) (width - WIN_W) / 2

3、, (int) (height - WIN_H) / 2,WIN_W, WIN_H);/ 窗口配置this.setTitle(java版计算器);this.validate;this.setResizable(false);this.setVisible(true);this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);/ 添加计算器按钮面板myPanel = new MyPanel;this.add(myPanel, BorderLayout.CENTER);public static void main(String args) new Calcu

4、lator;/* 计算器按钮面板类*/class MyPanel extends JPanel implements ActionListener JButton button1, button2, button3, button4, button5, button6, button7,button8, button9, button0, buttonJia, buttonJian, buttonCheng,buttonChu, buttonDeng, buttonDian, buttonC, buttonDel,buttonZF, buttonGH;JTextField jTextField

5、; / 计算器显示屏char oper; / 操作符String key, allKey = 1234567890.del, jjccKey = +-*/;BigDecimal d1, d2;boolean first;public MyPanel / 设置布局this.setLayout(new FlowLayout(FlowLayout.LEFT, 4, 5);/ 计算器显示屏jTextField = new JTextField(21);jTextField.setHorizontalAlignment(JTextField.RIGHT);jTextField.setEditable(f

6、alse);jTextField.setBackground(new Color(255, 255, 255);jTextField.setText(0);this.add(jTextField);/ 计算器按钮button1 = new JButton(1);button2 = new JButton(2);button3 = new JButton(3);button4 = new JButton(4);button5 = new JButton(5);button6 = new JButton(6);button7 = new JButton(7);button8 = new JButt

7、on(8);button9 = new JButton(9);button0 = new JButton(0);buttonJia = new JButton(+);buttonJian = new JButton(-);buttonCheng = new JButton(*);buttonChu = new JButton(/);buttonDeng = new JButton(=);buttonDian = new JButton(.);buttonDel = new JButton(del);buttonC = new JButton(c);buttonZF = new JButton(

8、);buttonGH = new JButton();button1.setPreferredSize(new Dimension(55, 30);button2.setPreferredSize(new Dimension(55, 30);button3.setPreferredSize(new Dimension(55, 30);button4.setPreferredSize(new Dimension(55, 30);button5.setPreferredSize(new Dimension(55, 30);button6.setPreferredSize(new Dimension

9、(55, 30);button7.setPreferredSize(new Dimension(55, 30);button8.setPreferredSize(new Dimension(55, 30);button9.setPreferredSize(new Dimension(55, 30);button0.setPreferredSize(new Dimension(55, 30);buttonJia.setPreferredSize(new Dimension(55, 30);buttonJian.setPreferredSize(new Dimension(55, 30);butt

10、onCheng.setPreferredSize(new Dimension(55, 30);buttonChu.setPreferredSize(new Dimension(55, 30);buttonDeng.setPreferredSize(new Dimension(55, 30);buttonDian.setPreferredSize(new Dimension(55, 30);buttonDel.setPreferredSize(new Dimension(55, 30);buttonC.setPreferredSize(new Dimension(55, 30);buttonZF

11、.setPreferredSize(new Dimension(55, 30);buttonGH.setPreferredSize(new Dimension(55, 30);this.add(buttonDel);this.add(buttonC);this.add(buttonZF);this.add(buttonGH);this.add(button1);this.add(button2);this.add(button3);this.add(buttonJia);this.add(button4);this.add(button5);this.add(button6);this.add

12、(buttonJian);this.add(button7);this.add(button8);this.add(button9);this.add(buttonCheng);this.add(button0);this.add(buttonDian);this.add(buttonDeng);this.add(buttonChu);buttonDel.addActionListener(this);buttonC.addActionListener(this);buttonZF.addActionListener(this);buttonGH.addActionListener(this)

13、;button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this);button4.addActionListener(this);button5.addActionListener(this);button6.addActionListener(this);button7.addActionListener(this);button8.addActionListener(this);button9.addActionListener(this);button0.add

14、ActionListener(this);buttonJia.addActionListener(this);buttonJian.addActionListener(this);buttonCheng.addActionListener(this);buttonChu.addActionListener(this);buttonDeng.addActionListener(this);buttonDian.addActionListener(this);/ 计算器初始化init;/* 计算器初始化*/public void init d1 = new BigDecimal(0);d1 = n

15、ew BigDecimal(0);key = =;oper = =;jTextField.setText(0);first = true; / 用于标记是否进行连续操作/* 按钮监听*/public void actionPerformed(ActionEvent e) JButton b = (JButton) e.getSource;if (b = buttonDian) / 按下.jTextField.setText(jTextField.getText + .);if (first) d2 = d1 = getNum; else d2 = getNum; else if (b = bu

16、ttonZF) / 按下BigDecimal d = getNum;d = new BigDecimal(0).subtract(d);setFormatNum(d);if (first) d2 = d1 = getNum; else d2 = getNum; else if (b = buttonDel) / 按下delif (jTextField.getText.length = 1| jTextField.getText.length = 2& jTextField.getText.startsWith(-) jTextField.setText(0); else String s =

17、jTextField.getText;s = s.substring(0, s.length - 1);if (s.endsWith(E+) | s.endsWith(E-)s = s.substring(0, s.length - 2);jTextField.setText(s);if (first) d2 = d1 = getNum; else d2 = getNum; else if (b = buttonC) / 按下cinit; else if (b = buttonJia) / 按下+BigDecimal s;if (!first & allKey.indexOf(key) >

18、= 0) if (oper = - | oper = /) s = operate(d1, oper, d2); else s = operate(d2, oper, d1);setFormatNum(s);/ 如果不是第一次,且上一次操作是对数字进行操作else first = false;d2 = d1 = getNum;/ System.out.print(111我执行啦n);oper = +; else if (b = buttonJian) / 按下-BigDecimal s;if (!first & allKey.indexOf(key) >= 0) s = operate(d

19、1, oper, d2);setFormatNum(s);/ 如果不是第一次,且上一次操作是对数字进行操作else first = false;d2 = d1 = getNum;oper = -; else if (b = buttonCheng) / 按下*BigDecimal s;if (!first & allKey.indexOf(key) >= 0) if (oper = - | oper = /) s = operate(d1, oper, d2); else s = operate(d2, oper, d1);setFormatNum(s);/ 如果不是第一次,且上一次操作是

20、对数字进行操作else first = false;d2 = d1 = getNum;oper = *; else if (b = buttonChu) / 按下/BigDecimal s;if (!first & allKey.indexOf(key) >= 0) s = operate(d1, oper, d2);setFormatNum(s);/ 如果不是第一次,且上一次操作是对数字进行操作else first = false;d2 = d1 = getNum;oper = /; else if (b = buttonGH) / 按下平方根if (jTextField.getText

21、.startsWith(-) init;return;BigDecimal d = getNum;MathContext mc = new MathContext(10, RoundingMode.HALF_DOWN);d = new BigDecimal(Math.sqrt(d.doubleValue), mc);setFormatNum(d);if (first) d2 = d1 = getNum; else d2 = getNum; else if (b = buttonDeng) / 按下=BigDecimal s = null;d2 = getNum;if (!key.equals(

22、=) s = operate(d1, oper, d2); else s = operate(d2, oper, d1);if (oper != = & !key.equals(=) / 上一次操作为 +-*/d1 = getNum;setFormatNum(s);first = true; else / 按下其他按钮if (this.jTextField.getText.equals(0)| allKey.indexOf(key) = -1) this.jTextField.setText(b.getText); else this.jTextField.setText(jTextField

23、.getText + b.getText);if (first) d2 = d1 = getNum; else d2 = getNum;/ d2作被加数:d2+d1key = b.getText;/* 获取操作数* return 操作数*/public BigDecimal getNum BigDecimal d = new BigDecimal(jTextField.getText);return d;public void setFormatNum(BigDecimal dd) MathContext mc = new MathContext(18, RoundingMode.HALF_D

24、OWN);BigDecimal d = new BigDecimal(dd.toString, mc);String num = d.toString;if (num.endsWith(.0)num = num.replaceAll(.0, );this.jTextField.setText(num);/* 计算* param a1* 操作数1* param c* 操作符* param a2* 操作数2* return*/public BigDecimal operate(BigDecimal a1, char c, BigDecimal a2) MathContext mc = new MathContext(10, RoundingMode.HALF_DOWN);switch (c) case +:return a1.add(a2);case -:return a1.subtract(a2);case *:return a1.multiply(a2);case /:if (pareTo(new BigDecimal(0) = 0) init;return new BigDecimal(0);return a1.divide(a2, mc);default:return a2;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号