要清理文件了,把这个代码保存一下。


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/** topic:java-Calculate* author:yll* date:2019-5-31* */
public class Calcu extends JFrame implements ActionListener {// 结果文本框JTextField result = new JTextField("0");// 按钮JButton[] btns = new JButton[30];// 菜单栏JMenuBar mb = new JMenuBar();JMenu fileMenu = new JMenu("文件");JMenu helpMenu = new JMenu("帮助");JMenu otherMenu = new JMenu("其他");JMenuItem saveMI = new JMenuItem("保存");JMenuItem exitMI = new JMenuItem("退出");JMenuItem helpMI = new JMenuItem("帮助");JMenuItem aboutMI = new JMenuItem("关于");JMenuItem bugMI = new JMenuItem("bug");JMenuItem feedbackMI = new JMenuItem("反馈");double cal, before, back;// 第一个操作数String foreText = new String("");// 第二个操作数String backText = new String("");boolean flag1 = false; // 判断是否需要第二个操作数boolean flag2 = false; // 判断第二个操作数是否输入boolean flag3 = false;// 是否计算完boolean flag = false; // 第一个操作数是否输完boolean eq = false;// 是否有等号String op = "";public void init() {fileMenu.add(saveMI);fileMenu.addSeparator();fileMenu.add(exitMI);helpMenu.add(helpMI);helpMenu.addSeparator();helpMenu.add(aboutMI);otherMenu.add(bugMI);otherMenu.addSeparator();otherMenu.add(feedbackMI);mb.add(fileMenu);mb.add(helpMenu);mb.add(otherMenu);this.add(result, BorderLayout.NORTH);JPanel p = new JPanel();p.setLayout(new GridLayout(6, 4, 3, 3));// 把25个按钮放在25个单元格for (int i = 0; i < 10; i++) {btns[i] = new JButton(String.valueOf(i));btns[i].setBackground(Color.white);btns[i].addActionListener(this);}// 一层btns[10] = new JButton("%");btns[11] = new JButton("Sqrt");btns[12] = new JButton("X^2");btns[13] = new JButton("1/x");p.add(btns[10]);p.add(btns[11]);p.add(btns[12]);p.add(btns[13]);// 二层btns[14] = new JButton("CE");btns[15] = new JButton("C");btns[16] = new JButton("<—");btns[17] = new JButton("÷");p.add(btns[14]);p.add(btns[15]);p.add(btns[16]);p.add(btns[17]);// 三层btns[18] = new JButton("*");p.add(btns[7]);p.add(btns[8]);p.add(btns[9]);p.add(btns[18]);// 四层btns[19] = new JButton("-");p.add(btns[4]);p.add(btns[5]);p.add(btns[6]);p.add(btns[19]);// 五层btns[20] = new JButton("+");p.add(btns[1]);p.add(btns[2]);p.add(btns[3]);p.add(btns[20]);// 六层btns[21] = new JButton("=");btns[22] = new JButton(".");btns[23] = new JButton("-+");p.add(btns[23]);p.add(btns[0]);p.add(btns[22]);p.add(btns[21]);// 给按钮添加监听器btns[10].addActionListener(this);// %btns[11].addActionListener(this);// Sqrtbtns[12].addActionListener(this);// x^2btns[13].addActionListener(this);// 1/xbtns[14].addActionListener(this);// CE 只是清楚当前输入的数据或符号btns[15].addActionListener(this);// C 全部清零btns[16].addActionListener(this);// <- 撤退btns[17].addActionListener(this);// ÷btns[18].addActionListener(this);// *btns[19].addActionListener(this);// -btns[20].addActionListener(this);// +btns[21].addActionListener(this);// =btns[22].addActionListener(this);// .btns[23].addActionListener(this);// -+this.add(p);this.setJMenuBar(mb);this.setVisible(true);this.setResizable(true);this.setBounds(700, 300, 370, 400);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 事件监听器aboutMI.addActionListener(this);helpMI.addActionListener(this);exitMI.addActionListener(this);saveMI.addActionListener(this);bugMI.addActionListener(this);feedbackMI.addActionListener(this);}public static void main(String[] args) {Calcu t = new Calcu();t.init();}@Overridepublic void actionPerformed(ActionEvent e) {// 菜单栏有关dealMenu(e);/* <- 符号处理 */dealBack(e);/* C CE 处理 */dealClear(e);// 第一個操作數if (!flag)dealNumberone(e);/* 符号处理 */if (op.equals(""))dealCharacter(e);// 第二個操作數if (!flag1)dealNumbertwo(e);// 等号if (flag && e.getSource() == btns[21]) {Calculate(flag1);}if (flag3 && e.getSource() != btns[21]) {System.out.println(flag3);JOptionPane.showMessageDialog(null, "请先清除全部(C)之后再使用!");}}public void dealMenu(ActionEvent e) {// 菜单栏有关if (e.getSource() == this.aboutMI) {JOptionPane.showMessageDialog(null, "小小Java计算器V2.0\n 开发人:杨露露");}if (e.getSource() == this.helpMI) {JOptionPane.showMessageDialog(null, "百度搜索计算器使用说明学习一下");}if (e.getSource() == this.feedbackMI) {JOptionPane.showMessageDialog(null, "               联系方式\n邮件:1026533954@qq.com \n                   谢谢!");}if (e.getSource() == this.exitMI) {System.exit(0);}if (e.getSource() == this.saveMI) {JOptionPane.showMessageDialog(null, "抱歉!此功能尚未开放");}if (e.getSource() == this.bugMI) {JOptionPane.showMessageDialog(null, "1、负数情况不适用\n2、小数点在操作数首位不适用\n3、待发现……");}}/* 第一个操作数 */public String dealNumberone(ActionEvent e) {// 第一个操作数for (int i = 0; i <= 9; i++) {if (e.getSource() == btns[i] && !flag) {result.setText("");foreText = foreText + e.getActionCommand();result.setText(foreText);}}// 第一个数的小数点if (!flag && foreText != "") {if (e.getSource() == btns[22]) {foreText = foreText + e.getActionCommand();result.setText(foreText);}}return foreText;}/* 第二个操作数 */public String dealNumbertwo(ActionEvent e) {if (dealIllegal(e) && flag2 && op != "" && !eq) {JOptionPane.showMessageDialog(null, "不合法!请重新输入!");result.setText(backText);} else {// 第二个操作数for (int i = 0; i <= 9; i++) {if (e.getSource() == btns[i] && flag) {flag2 = true;backText = backText + e.getActionCommand();result.setText(backText);}}// 第二个数的小数点if (flag && backText != "") {if (e.getSource() == btns[22]) // 小数点{backText = backText + e.getActionCommand();result.setText(backText);}}}return backText;}// 計算 Flag判斷是否需要第二個操作數public void Calculate(boolean Flag) {// 不需要if (Flag) {eq = true;if (op.equals("X^2")) {cal = this.before * this.before;} else if (op.equals("1/x")) {cal = 1 / this.before;} else if (op.equals("Sqrt")) {cal = Math.sqrt(this.before);} else if (op.equals("-+")) {cal = -this.before;} elsecal = 0.0;this.result.setText(String.valueOf(cal));flag3 = true;} else // 需要{eq = true;if (backText.equals("")) {JOptionPane.showMessageDialog(null, "请重新输入合法的操作数!");ClearAll();//System.out.println(flag3+"--");} else {this.back = Double.parseDouble(backText);if (op.equals("+"))cal = this.before + this.back;else if (op.equals("-"))cal = this.before - this.back;else if (op.equals("*"))cal = this.before * this.back;else if (op.equals("÷") && this.back != 0.0)cal = this.before / this.back;else if (op.equals("%"))cal = this.before % this.back;elsecal = 0.0;this.result.setText(String.valueOf(cal));flag3 = true;}}}/* C CE 处理 */public void dealClear(ActionEvent e) {/* C 全部清空 CE 清空當前输入的数据或符号 处理 */if (e.getSource() == btns[15]) // C{ClearAll();}if (e.getSource() == btns[14])// CE{if (!flag) // 代表第一个操作数没有数完{foreText = "";this.result.setText("0");} else if (backText != "" && eq == false)// 第二个数没有输入完 并且没有输入等号{backText = "";this.result.setText("0");} else if (flag && backText.equals(""))// 第一个数输入完并且第二个数还没有开始输入{op = "";}}}/* 运算符 */public void dealCharacter(ActionEvent e) {if (e.getSource() == btns[10] || e.getSource() == btns[17] || e.getSource() == btns[18]|| e.getSource() == btns[19] || e.getSource() == btns[20]) {flag = true;this.before = Double.parseDouble(foreText);result.setText("");op = e.getActionCommand();// op代表运算类型} else if (e.getSource() == btns[11] || e.getSource() == btns[12] || e.getSource() == btns[13]|| e.getSource() == btns[23]) {flag1 = true; // 不需要第二個操作數了flag = true;this.before = Double.parseDouble(foreText);result.setText("");op = e.getActionCommand();// op代表运算类型}}public void dealBack(ActionEvent e) {if (e.getSource() == btns[16]) {/* 在没输入意外的情况下 *//* 运算符没输入的话说明输入的是第一个操作符 */if (op.equals("") && !flag) {foreText = foreText.substring(0, foreText.length() - 1);result.setText(foreText);} else if (op != "" && backText.equals(""))// 消除op{op = "";} else if (backText != "") {backText = backText.substring(0, backText.length() - 1);result.setText(backText);}}}/* 处理不合法的情况 输入第二个数的时候出现运算符 */public boolean dealIllegal(ActionEvent e) {if (e.getSource() == btns[10] || e.getSource() == btns[17] || e.getSource() == btns[18]|| e.getSource() == btns[19] || e.getSource() == btns[20] || e.getSource() == btns[11]|| e.getSource() == btns[12] || e.getSource() == btns[13] || e.getSource() == btns[23])return true;return false;}/* 全部清除 */public void ClearAll() {flag = false;flag1 = false;flag2 = false;flag3 = false;eq = false;foreText = "";backText = "";op = "";this.result.setText("0");}
}

java 简单计算器相关推荐

  1. Java 简单计算器(加法)

    Java 简单计算器(加法) 结构图: ​ 如何用java写一个简易的加法计算器?本人菜鸟一枚,半个小时完成.大部分代码的解读注释已经标记好了,如下 程序入口 程序的main方法应该始终保持干净清爽, ...

  2. 求java简单计算器源代码_java简单计算器源代码

    简单计算器代码 package calcultorthree; import java.awt.BorderLayout;//导入边界布局管理器类 import java.awt.GridLayout ...

  3. JAVA——简单计算器设计

    1.首先展示效果图(仅是单项运算),作为新手尽量降低了耦合,希望能得到大佬指点. (1)设置按键(作为一个父类) import java.awt.Button; import java.awt.Gri ...

  4. java计算器简单吗,java简单计算器

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 无聊做个java加减乘除计算器,int型,没有小数,,呵呵,,真特么无聊,, package swing; import javax.swing.*; i ...

  5. java简单计算器课程设计_java仿windows简易计算器课程设计 源码+报告

    [实例简介] java仿windows简易计算器课程设计 源码+报告 课直接运行. [实例截图] [核心代码] Java课设-简易计算器 └── Java课设-简易计算器 ├── Java课程设计.d ...

  6. JAVA简单计算器(简单实现两数加减乘除)

    文章目录 前言 简易计算器 前言 今日的小练习为用户输入两个数,简易实现两数的加减乘除并可重复使用. 实现这个小功能有了大概的思路其实还好,但是我却没有止步于此,为了提升用户的体验性,保证这个小程序的 ...

  7. java简单计算器课程设计报告_JAVA课程设计之计算器设计报告

    题 目: 计算器 院(系):xxx学院 年级专业:xxx班 学生姓名:xxx 指导老师:xx老师 开始时间:200x-xx-xx 完成时间:200x-xx-xx 目 录 1. 摘 要 2. 概要设计 ...

  8. Java简单计算器界面及功能的实现

    实验要求 编写计算器界面并实现其功能. 实验步骤 1.界面基本样式绘制 代码实现 import java.awt.*; import javax.swing.*; public class f_fra ...

  9. java方法重载和简单计算器

    Java方法 **方法重载:**一个类中,有相同的函数名称,但形参不同的函数 重载规则: 方法名称必须相同 参数列表必须不同(个数不同,类型不同,参数排列顺序不同等) 返回类型可以相同可以不同 pub ...

最新文章

  1. MCSE2003学习之四
  2. vrrp虚拟路由冗余协议简图
  3. Tomcat、Websphere和Jboss类加载机制
  4. 世界不乏爱因斯坦,缺乏的适合他茁壮成长的环境
  5. 生态学研究方法(一)
  6. Jeecg入门篇,高手掠过
  7. java授权失败_自定义Spring Security的身份验证失败处理方法
  8. go json tag 字符串 整数_json:你或许还不知道的序列化操作(一)
  9. 医疗中文问句意图匹配Top3方案ppt
  10. GNU Linux系统变量(sysctl配置命令)综合使用
  11. Python攻克之路-生成器
  12. WPF学习(一)--布局控件简介
  13. csdn切换格式markdown
  14. KVC中setValue:forKey:实现原理
  15. 解决errno 256报错_wuli大世界_新浪博客
  16. 整合UWALOHA和VBF
  17. emqx速度_MQTT研究之EMQ:【EMQX使用中的一些问题记录(1)】
  18. 文本摘要相关论文汇总
  19. 在Android Studio中删除module的方法
  20. Bootstrap后台开发模板整理

热门文章

  1. 用javascript模拟实现计算器
  2. Wordpress开发 - 获取置顶文章的方法
  3. 0035-购书款的计算
  4. overleaf是啥
  5. 安装vue-cli 4058错误解决办法
  6. 1号店周年庆订单爆仓背后的幸福
  7. 如何隐藏CSDN博客文章
  8. python中可以作为定界符_在Python中,字符串属于不可变有序序列,使用单引号、双引号、三单引号或三双引号作为定界符,并且不同的定界符之间可以互相嵌套。...
  9. 平面设计点线面在设计中的运用
  10. Linux: 回到根目录cd /