版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、package example;import java.awt.*;import java.awt.event.*;public class Calculator extends Frame /* * 本实例实现功能如下 1.普通加减乘除运算 2.小数点的情况已经解决 3.开始按0已经解决 4.消去键可以起作用 * * author 血怒樱花 * QQ:108543911 */private static final long serialVersionUID = 1L;private String name = "0", "1", "2&qu
2、ot;, "3", "4", "5", "6", "7", "8", "9",".", "=", "+", "-", "*", "/", "Backspace", "", "", "C" ;private Button button = new Buttonn
3、ame.length;private TextField textfield = new TextField("0.");/ 设置2个字符A1,A2用于存放点击运算符号之前的String数据private String A1 = null, A2 = null;/ 设置2个字符B1,B2用于存放点击运算符号之后的String数据private String B1 = null, B2 = null;/ 存放运算符号前后的数据,douuble类型进行运算private double A, B;/ s存放为哪种运算符号,Result存放最后的运行结果private String
4、 Result="0", s;/ 判断这个数字是否为小数,小数的时为true不是时为falseprivate boolean Decimal=false;/ 构造器,显示在标题栏public Calculator() super("TEST:Caculator");/ 计算器的基本布局,在一个BorderLayout上面放置了一个GridLayout一个BorderLayoutpublic void init() setLayout(new BorderLayout(2, 2);/ 设置2个PanelPanel p0 = new Panel();Pane
5、l p1 = new Panel();/ p0上添加所有按扭p0.setLayout(new GridLayout(5, 4, 1, 1);/ 不同的按扭采用不同的监听事件0-9和"."采用ButtonListener()for (int i = 0; i < 11; i+) buttoni = new Button(namei);/ 设置字体颜色为蓝色buttoni.setForeground(Color.blue);p0.add(buttoni);buttoni.addActionListener(new ButtonListener();/ 其余的运算符号采取B
6、uttonListener2()另一监听事件for (int i = 11; i < name.length; i+) buttoni = new Button(namei);/ 设置字体颜色为红色buttoni.setForeground(Color.RED);p0.add(buttoni);buttoni.addActionListener(new ButtonListener2();/ 设置中间2个按扭不可见,增加美观,对称button17.setVisible(false);button18.setVisible(false);/ p1上添加文本输出区域p1.setLayout(
7、new BorderLayout(5, 5);p1.add(textfield);/ 不可以向文本框里随便写东西textfield.setEditable(false);/ 设置文本框背景为白色textfield.setBackground(Color.WHITE);add(p0, BorderLayout.SOUTH);add(p1, BorderLayout.NORTH);pack();/ 设置打开窗口在显示器的中间显示setLocationRelativeTo(null);/ 关闭按扭,适配器模式addWindowListener(new WindowAdapter() public v
8、oid windowClosing(WindowEvent e) System.exit(0););/ 调整可见setVisible(true);public class ButtonListener implements ActionListener public void actionPerformed(ActionEvent e) System.out.print(e.getActionCommand() + " ");/ 当A2和B2同时为null时候表示程序第一次运行或者开始一次新的运行,即按"="之后,将按键获取的值赋给A2-setp1if
9、(A2 = null && B2 = null) / 所按的数字按扭不是"0"的时候对A2进行赋值,否则给A2值不变,但是让textfield恢复初始值"0."if (!"0".equals(e.getActionCommand() / 考虑第一次按小数点的情况,按小数点后将boolean类型的Decimal定义为trueif (".".equals(e.getActionCommand() A2 = "0."Decimal = true;textfield.setText(A2
10、); else A2 = e.getActionCommand();textfield.setText(A2); else if ("0".equals(e.getActionCommand() else A2 = e.getActionCommand();textfield.setText("0");/ 当A2不等于null,B2和A为null,表示还没有按运算符号,仍然对A2进行赋值 else if (A2 != null && A1 = null && B2 = null) / 已经是小数的在点小数点不做任何动作,不
11、是小数的在按"."的时候追加赋值并且设置Decimal为trueif (".".equals(e.getActionCommand() if (Decimal) else Decimal = true;A2 += e.getActionCommand();textfield.setText(A2); else A2 += e.getActionCommand();textfield.setText(A2);/ 当A,A2不等于null,B2为null,表示刚按过运算符号,开始对B2进行赋值/ 仍要考虑"0"的情况,但要考虑0做为被减数
12、,乘数和加数,此处B2可以等于0/ B2也可以是小数将Decimal设置回false else if (A2 != null && A1 != null && B2 = null) Decimal = false;if (!"0".equals(e.getActionCommand() / 不为"0"但为"."的情况,原理同上if (".".equals(e.getActionCommand() Decimal = true;if (Decimal) B2 = "0.&qu
13、ot; else Decimal = true;B2 = e.getActionCommand();textfield.setText(B2); else B2 = e.getActionCommand();textfield.setText(B2); else B2 = "0"textfield.setText(B2);/ 当A,A2,B2都不为null的时候表示B2已经被赋值,继续按数字按扭对B2继续赋值/ 当B2等于0的时候不进行追加直接赋值,仅当B2不等于0的时候才进行追加 else if (A2 != null && A1 != null &
14、;& B2 != null) if ("0".equals(B2) / 考虑用户连续2次按"0"的情况if ("0".equals(e.getActionCommand() B2 = "0"textfield.setText(B2); else B2 = e.getActionCommand();textfield.setText(B2); else / 不为"0"但为"."的情况,原理同上if (".".equals(e.getActionCom
15、mand() if (Decimal) else Decimal = true;B2 += e.getActionCommand();textfield.setText(B2); else B2 += e.getActionCommand();textfield.setText(B2);public class ButtonListener2 implements ActionListener public void actionPerformed(ActionEvent e) System.out.print(e.getActionCommand() + " ");/ 一
16、旦按了运算符号"+-*/"A2赋值给A,使得A和A2都不为null,但此时B2还为null在按数字键的时候便会给B2赋值/ 给s-运算符号赋值if ("+".equals(e.getActionCommand() if (A2 = null) A2 = "0"A1 = A2;s = "+" else if ("-".equals(e.getActionCommand() if (A2 = null) A2 = "0"A1 = A2;s = "-" else
17、 if ("*".equals(e.getActionCommand() if (A2 = null) A2 = "0"A1 = A2;s = "*" else if ("/".equals(e.getActionCommand() if (A2 = null) A2 = "0"A1 = A2;s = "/"/ 等号的时候把B2赋值给B,进行最后的运算 else if ("=".equals(e.getActionCommand() if (A2 = nu
18、ll) A2 = "0"if (B2 = null) B2 = "0"A1 = A2;B1 = B2;/ 将String类型转换为double进行运算A = Double.parseDouble(A1);B = Double.parseDouble(B1);if ("+".equals(s) Result = String.valueOf(A + B);System.out.println();System.out.println(A + "+" + B + "=" + Result); els
19、e if ("-".equals(s) Result = String.valueOf(A - B);System.out.println();System.out.println(A + "-" + B + "=" + Result); else if ("*".equals(s) Result = String.valueOf(A * B);System.out.println();System.out.println(A + "*" + B + "=" + Result
20、);textfield.setText(Result);A1 = null;A2 = null;B1 = null;B2 = null;Decimal=false; else if ("Backspace".equals(e.getActionCommand() String text = "0"if (A2 = null && A1 = null) else if (A2 != null && A1 = null && B2 = null) int t = A2.length();text = A2;if (t = 1) text = "0" else text = text.substring(0, t - 1);A2 = text; else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年招商银行无锡分行社会招聘备考题库及完整答案详解一套
- 2025年代招某行政机关派遣制工作人员招聘备考题库及完整答案详解1套
- web渗透测试课程设计
- 《戏曲教育在非物质文化遗产传承中的作用与创新发展研究》教学研究课题报告
- 2025年潍坊市北京大学现代农业研究院(潍坊现代农业山东省实验室)招聘工作人员考试核心题库及答案解析
- 2025铜鼓县公开招聘编外用工(公益性岗位)人员9人备考核心题库及答案解析
- 2025云南昆明市第三人民医院“凤凰引进计划”高层次人才招引模拟笔试试题及答案解析
- 2026年甘肃天水市事业单位引进高层次人才(219人)笔试重点试题及答案解析
- 2025年度12月浙江嘉兴市海宁市交通投资控股集团有限公司下属公司招聘4人备考考试题库及答案解析
- 2025年张家港市第五人民医院自主招聘编外合同制卫技人员备考题库及答案详解参考
- 2025秋苏少版(新教材)初中美术八年级上册知识点及期末测试卷及答案
- 2024年国网35条严重违章及其释义解读-知识培训
- YY/T 0063-2024医用电气设备医用诊断X射线管组件焦点尺寸及相关特性
- 创业基础智慧树知到期末考试答案章节答案2024年山东大学
- GJB9001C质量保证大纲
- 成品综合支吊架深化设计及施工技术专项方案
- 解码国家安全智慧树知到期末考试答案2024年
- 配电网故障及其特征
- 特种设备检验检测行业商业计划书
- 门禁卡使用权限申请单
- 拆除玻璃施工方案
评论
0/150
提交评论