简易计算器程序设计思路及流程图
我们经常会在电脑、手机或网页上等使用简易计算器的程序。所谓简易计算器就是满足非专业人士的一般生活需求,一般也就是加减乘除了。
这样的简易计算器程序看似简单,但真正实现起来还是要好好设计一下思路的。
全局要保存的变量:
第一个运算数: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