简易计算器程序设计思路及流程图

我们经常会在电脑、手机或网页上等使用简易计算器的程序。所谓简易计算器就是满足非专业人士的一般生活需求,一般也就是加减乘除了。

这样的简易计算器程序看似简单,但真正实现起来还是要好好设计一下思路的。

全局要保存的变量:

第一个运算数:number1

当前的运算符:newOper

上次的运算数2:laatNum

上一次的运算符:lastOper

当前的运算数是否已输入完毕,也就是是否开始运算数2的输入:acceptNewNum

点击一个数字键(0-9)时的事件响应: 当前数 * 10 + 本次新的数字

点击一个运算符(+-*/)时的事件响应的流程图:

点击等于号(=)时的事件响应的流程图:

伪代码:

float number1;

char newOper;

float lastNumber;

char lastOper;

bool acceptNewNum;

void pressOper(oper) {

float number2;

if (newOper == '') {

// 1 + :的情况,之前的运算符全被消费了

number1 = result.text.floatValue;

} else {

if (acceptNewNum) {

// 连续点击多个运算符:1+-++-的情况

// 直接进行最后的更新newOper和acceptNewNum

// do nothing

} else {

number2 = result.text.floatValue;

number1 = calculate(number1, number2, newOper);

result.text = number1.toString();

}

}

newOper = oper;

acceptNewNum = true;

}

void pressEqual() {

if (newOper == '') {

if (lastOper == '') {

// 1+2=

// do nothing

} else {

// 1+2=[3];2= :的情况

number1 = result.text.floatValue;

result.text = calculate(number1, lastNum, lastOper).toString;

}

} else {

number2 = result.text.floatValue;

result.text = calculate(number1, number2, newOper).toString;

lastOper = newOper;

lastNum = number2;

// 当前运算符已被消费,清空之

newOper = '';

}

acceptNewNum = true;

}

更新文本框结果信息时,要从float转换为String,需要注意删除float后面多余的0,应该使用%g而不是%f

分享本文至:

WRITTEN BY

极乐鸟博客http://jileniao.net

java简易计算器程序框图_简易计算器程序设计思路及流程图相关推荐

  1. java实战家谱管理系统_简易家谱系统的设计与开发(附程序源代码).doc

    简易家谱系统的设计与开发(附程序源代码) 课程设计(论文) PAGE PAGE 1 编 号: 学 号: 课 程 设 计 教 学 院 计算机学院 课程名称 数据结构课程设计 题 目 简易家谱系统 专 业 ...

  2. java ssm小案例_简易的SSM框架整合小案例

    简易的SSM框架整合小案例 一.创建一个web工程的maven项目 1.项目名随便起 2.选择好你的maven路径,然后finish 二.配置pom.xml文件 org.springframework ...

  3. java属性的重写_简易Java(18):属性能否重写?为什么?

    本文将给大家介绍面向对象编程中一个基本的概念–属性隐藏(Field Hiding). 1.Java中,属性能否被覆盖? 来让我们看看下面的这个示例代码,它创建了两个子类实例:一个被赋值给子类引用,另外 ...

  4. java 2d划线 刷子_简易画板的JAVA实现

    要实现一个画图板,首先我们要掌握的是图形界面开发和事件监听机制.在Java中,图形界面开发有三套组件: 1.AWT组件:这是JDK1.0推出的图形组件类,位于java.awt这个包下.AWT组件被称为 ...

  5. java背单词页面_简易Web背单词软件 #01# 当前功能

    开发工具 Java作后端(Spring Boot),浏览器作前端. IDE:IntelliJ IDEA 2017.1.1 x64以及HBuilder 软件启动 一,切换到相应目录,通过命令行指令jav ...

  6. java 聊天工具源代码_简易聊天软件源码

    [java]代码库import java.io.*; import java.net.*; import java.util.*; public class ChatServer { boolean ...

  7. java 网速测试_简易的网速测试 - 梦想游戏 - OSCHINA - 中文开源技术交流社区

    基本原理是访问稳定的网页来测试速度,或者利用稳定的下载地址来测速,比如QQ.EXE 网页粒度小 测试没有 下载地址 稳定准确 界面MFC完成,网络API使用CURL HttpClient.cpp #i ...

  8. Java实现抓娃娃_简易抓娃娃机H5的代码实现

    本文的实现主要用PixiJs实现.PixiJS是比较著名的2D渲染引擎.可以参照教程做事前学习了解. 准备工作 第一步是图片资源.这些都是从现有的抓娃娃h5中找到的一些png资源.具体可以查看资源目录 ...

  9. java oa工作流设计_简易OA漫谈之工作流设计(DB)

    1.流程图. 工作流可以做得很复杂,也可以设计的很简单.看下图 看这个图,一个流程图最基础的三部分:流程,步骤,操作. 2.流程模板. 流程图的程序描述就叫流程模板.一个流程模板大概需要的一些属性如下 ...

  10. python编写简易超市系统_简易控制台超市销售系统|Python练习系列[1]

    练习内容:主要是对嵌套字典和嵌套列表的操作练习 简易控制台超市销售系统完整代码和注释如下 from random import * import os #引入必要模块 class supermarke ...

最新文章

  1. 只需一行代码,你的纯文本秒变 Markdown
  2. 《3D数学基础系列视频》1.1向量基本概念
  3. Java并发编程(五):Java线程安全性中的对象发布和逸出
  4. swift 拖动按钮_Swift下使用UICollectionView 实现长按拖拽功能
  5. python自动翻译excel某一列_【python excel实例教程】怎样用Python将excel的某一列生成一个列表?...
  6. power bi 日期计算_2020国内外常用的BI商业智能软件
  7. 用jQuery的ajax的功能实现输入自动提示的功能
  8. 全明星投资融资5亿美元,曾下注亏损百亿的滴滴,及商汤、陆金所等独角兽...
  9. Ambari-Agent心跳丢失:Failed to connect to https://xx.xx.xx:8440/ca due to
  10. linux 文件名 自动补全,用Linux自动补全怎么补全命令?
  11. dva介绍--Dva概念(二)
  12. 对于企业是云服务器划算还是自购服务器划算?
  13. 面向对象和面向过程~~编程思想
  14. mysql死锁的原因及解决方法_mysql死锁的原因及解决方法
  15. Matlab产生正交矩阵
  16. 三国志战略版:国庆英雄集结解说_二
  17. Gopher转Rust辣眼睛语法排行榜
  18. 两线式键盘(AD按键)电路的设计与实现
  19. 计算机系统的四种启动方式是,U盘启动有四种模式?云骑士装机大师教你怎么选...
  20. 滴滴代驾司机勇救人质 绍兴公安倡建纺城滴滴红袖章队伍

热门文章

  1. 格拉布斯准则的应用(Python)
  2. python爬虫必看书籍推荐
  3. 8个绝对不能错过的PPT免费素材网站
  4. 小程序毕设作品之微信美食菜谱小程序毕业设计成品(6)开题答辩PPT
  5. 华为虚拟服务器bim,bim云服务器
  6. python数据建模优缺点_Python数据分析\建模入门建议
  7. python自动化办公手册之python操作PPT
  8. 【Anychart】自动保存flash图片到指定目录下。
  9. Linux 下载安装maven
  10. linux终端黑客帝国代码雨效果