java简易计算器程序框图_简易计算器程序设计思路及流程图
简易计算器程序设计思路及流程图
我们经常会在电脑、手机或网页上等使用简易计算器的程序。所谓简易计算器就是满足非专业人士的一般生活需求,一般也就是加减乘除了。
这样的简易计算器程序看似简单,但真正实现起来还是要好好设计一下思路的。
全局要保存的变量:
第一个运算数: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简易计算器程序框图_简易计算器程序设计思路及流程图相关推荐
- java实战家谱管理系统_简易家谱系统的设计与开发(附程序源代码).doc
简易家谱系统的设计与开发(附程序源代码) 课程设计(论文) PAGE PAGE 1 编 号: 学 号: 课 程 设 计 教 学 院 计算机学院 课程名称 数据结构课程设计 题 目 简易家谱系统 专 业 ...
- java ssm小案例_简易的SSM框架整合小案例
简易的SSM框架整合小案例 一.创建一个web工程的maven项目 1.项目名随便起 2.选择好你的maven路径,然后finish 二.配置pom.xml文件 org.springframework ...
- java属性的重写_简易Java(18):属性能否重写?为什么?
本文将给大家介绍面向对象编程中一个基本的概念–属性隐藏(Field Hiding). 1.Java中,属性能否被覆盖? 来让我们看看下面的这个示例代码,它创建了两个子类实例:一个被赋值给子类引用,另外 ...
- java 2d划线 刷子_简易画板的JAVA实现
要实现一个画图板,首先我们要掌握的是图形界面开发和事件监听机制.在Java中,图形界面开发有三套组件: 1.AWT组件:这是JDK1.0推出的图形组件类,位于java.awt这个包下.AWT组件被称为 ...
- java背单词页面_简易Web背单词软件 #01# 当前功能
开发工具 Java作后端(Spring Boot),浏览器作前端. IDE:IntelliJ IDEA 2017.1.1 x64以及HBuilder 软件启动 一,切换到相应目录,通过命令行指令jav ...
- java 聊天工具源代码_简易聊天软件源码
[java]代码库import java.io.*; import java.net.*; import java.util.*; public class ChatServer { boolean ...
- java 网速测试_简易的网速测试 - 梦想游戏 - OSCHINA - 中文开源技术交流社区
基本原理是访问稳定的网页来测试速度,或者利用稳定的下载地址来测速,比如QQ.EXE 网页粒度小 测试没有 下载地址 稳定准确 界面MFC完成,网络API使用CURL HttpClient.cpp #i ...
- Java实现抓娃娃_简易抓娃娃机H5的代码实现
本文的实现主要用PixiJs实现.PixiJS是比较著名的2D渲染引擎.可以参照教程做事前学习了解. 准备工作 第一步是图片资源.这些都是从现有的抓娃娃h5中找到的一些png资源.具体可以查看资源目录 ...
- java oa工作流设计_简易OA漫谈之工作流设计(DB)
1.流程图. 工作流可以做得很复杂,也可以设计的很简单.看下图 看这个图,一个流程图最基础的三部分:流程,步骤,操作. 2.流程模板. 流程图的程序描述就叫流程模板.一个流程模板大概需要的一些属性如下 ...
- python编写简易超市系统_简易控制台超市销售系统|Python练习系列[1]
练习内容:主要是对嵌套字典和嵌套列表的操作练习 简易控制台超市销售系统完整代码和注释如下 from random import * import os #引入必要模块 class supermarke ...
最新文章
- 只需一行代码,你的纯文本秒变 Markdown
- 《3D数学基础系列视频》1.1向量基本概念
- Java并发编程(五):Java线程安全性中的对象发布和逸出
- swift 拖动按钮_Swift下使用UICollectionView 实现长按拖拽功能
- python自动翻译excel某一列_【python excel实例教程】怎样用Python将excel的某一列生成一个列表?...
- power bi 日期计算_2020国内外常用的BI商业智能软件
- 用jQuery的ajax的功能实现输入自动提示的功能
- 全明星投资融资5亿美元,曾下注亏损百亿的滴滴,及商汤、陆金所等独角兽...
- Ambari-Agent心跳丢失:Failed to connect to https://xx.xx.xx:8440/ca due to
- linux 文件名 自动补全,用Linux自动补全怎么补全命令?
- dva介绍--Dva概念(二)
- 对于企业是云服务器划算还是自购服务器划算?
- 面向对象和面向过程~~编程思想
- mysql死锁的原因及解决方法_mysql死锁的原因及解决方法
- Matlab产生正交矩阵
- 三国志战略版:国庆英雄集结解说_二
- Gopher转Rust辣眼睛语法排行榜
- 两线式键盘(AD按键)电路的设计与实现
- 计算机系统的四种启动方式是,U盘启动有四种模式?云骑士装机大师教你怎么选...
- 滴滴代驾司机勇救人质 绍兴公安倡建纺城滴滴红袖章队伍