收藏 分享(赏)

基于Java的计算器算法(源代码).doc

上传人:精品资料 文档编号:10357670 上传时间:2019-11-03 格式:DOC 页数:8 大小:103.34KB
下载 相关 举报
基于Java的计算器算法(源代码).doc_第1页
第1页 / 共8页
基于Java的计算器算法(源代码).doc_第2页
第2页 / 共8页
基于Java的计算器算法(源代码).doc_第3页
第3页 / 共8页
基于Java的计算器算法(源代码).doc_第4页
第4页 / 共8页
基于Java的计算器算法(源代码).doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; /* * 一个计算器,与 Windows 附件自带计算器的标准版功

2、能、界面相仿。 但还不支持键盘操作。 */ public class Calculator extends JFrame implements ActionListener /* 计算器上的键的显示名字 */ private final String KEYS = “7“, “8“, “9“, “/“, “sqrt“, “4“, “5“, “6“, “*“, “%“, “1“, “2“, “3“, “-“, “1/x“, “0“, “+/-“, “.“, “+“, “=“ ; /* 计算器上的功能键的显示名字 */ private final String COMMAND = “Backspa

3、ce“, “CE“, “C“ ; /* 计算器左边的 M 的显示名字 */ private final String M = “ “, “MC“, “MR“, “MS“, “M+“ ; /* 计算器上键的按钮 */ private JButton keys = new JButtonKEYS.length; /* 计算器上的功能键的按钮 */ private JButton commands = new JButtonCOMMAND.length; /* 计算器左边的 M 的按钮 */ private JButton m = new JButtonM.length; /* 计算结果文本框 */

4、 private JTextField resultText = new JTextField(“0“); / 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字 private boolean firstDigit = true; / 计算的中间结果。 private double resultNum = 0.0; / 当前运算的运算符 private String operator = “=“; / 操作是否合法 private boolean operateValidFlag = true; /* * 构造函数 */ public Calculator() super(

5、); / 初始化计算器 init(); / 设置计算器的背景颜色 this.setBackground(Color.LIGHT_GRAY); this.setTitle(“计算器“); / 在屏幕(500, 300)坐标处显示计算器 this.setLocation(500, 300); / 不许修改计算器的大小 this.setResizable(false); / 使计算器中各组件大小合适 this.pack(); /* * 初始化计算器 */ private void init() / 文本框中的内容采用右对齐方式 resultText.setHorizontalAlignment(JT

6、extField.RIGHT); / 不允许修改结果文本框 resultText.setEditable(false); / 设置文本框背景颜色为白色 resultText.setBackground(Color.white); / 初始化计算器上键的按钮,将键放在一个画板内 JPanel calckeysPanel = new JPanel(); / 用网格布局器,4 行,5 列的网格,网格之间的水平方向间隔为 3 个象素,垂直方向间隔为 3 个象素 calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3); for (int i = 0; i =

7、 0) / 用户按了数字键或者小数点键 handleNumber(label); / handlezero(zero); else / 用户按了运算符键 handleOperator(label); /* * 处理 Backspace 键被按下的事件 */ private void handleBackspace() String text = resultText.getText(); int i = text.length(); if (i 0) / 退格,将文本最后一个字符去掉 text = text.substring(0, i - 1); if (text.length() = 0)

8、 / 如果文本没有了内容,则初始化计算器的各种值 resultText.setText(“0“); firstDigit = true; operator = “=“; else / 显示新的文本 resultText.setText(text); /* * 处理数字键被按下的事件 * * param key */ private void handleNumber(String key) if (firstDigit) / 输入的第一个数字 resultText.setText(key); else if (key.equals(“.“) else if (!key.equals(“.“)

9、/ 如果输入的不是小数点,则将数字附在结果文本框的后面 resultText.setText(resultText.getText() + key); / 以后输入的肯定不是第一个数字了 firstDigit = false; /* * 处理 C 键被按下的事件 */ private void handleC() / 初始化计算器的各种值 resultText.setText(“0“); firstDigit = true; operator = “=“; /* * 处理运算符键被按下的事件 * * param key */ private void handleOperator(String

10、 key) if (operator.equals(“/“) / 除法运算 / 如果当前结果文本框中的值等于 0 if (getNumberFromText() = 0.0) / 操作不合法 operateValidFlag = false; resultText.setText(“除数不能为零“); else resultNum /= getNumberFromText(); else if (operator.equals(“1/x“) / 倒数运算 if (resultNum = 0.0) / 操作不合法 operateValidFlag = false; resultText.setT

11、ext(“零没有倒数“); else resultNum = 1 / resultNum; else if (operator.equals(“+“) / 加法运算 resultNum += getNumberFromText(); else if (operator.equals(“-“) / 减法运算 resultNum -= getNumberFromText(); else if (operator.equals(“*“) / 乘法运算 resultNum *= getNumberFromText(); else if (operator.equals(“sqrt“) / 平方根运算

12、resultNum = Math.sqrt(resultNum); else if (operator.equals(“%“) / 百分号运算,除以 100 resultNum = resultNum / 100; else if (operator.equals(“+/-“) / 正数负数运算 resultNum = resultNum * (-1); else if (operator.equals(“=“) / 赋值运算 resultNum = getNumberFromText(); if (operateValidFlag) / 双精度浮点数的运算 long t1; double t

13、2; t1 = (long) resultNum; t2 = resultNum - t1; if (t2 = 0) resultText.setText(String.valueOf(t1); else resultText.setText(String.valueOf(resultNum); / 运算符等于用户按的按钮 operator = key; firstDigit = true; operateValidFlag = true; /* * 从结果文本框中获取数字 * * return */ private double getNumberFromText() double result = 0; try result = Double.valueOf(resultText.getText().doubleValue(); catch (NumberFormatException e) return result; public static void main(String args) Calculator calculator1 = new Calculator(); calculator1.setVisible(true); calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报