IOS版计算器心得

ios MVC
为了不将其全写在ViewController中,分工明确,有了我们的ios MVC设计模式,
Model 数据
View 界面,呈现方式
Controller 数据与界面交互
三者之间的关系用那张著名的图就可以表示

现在来说计算器

  • Model里写表达式求值算法(建议学学中缀转后缀)
  • View里写计算器的界面
  • Controller里写一些buttton的点击事件及输入检查(稍后会说)

我的做法是将所输入的存入一个字符串,然后点等号时,调用Model的方法计算出结果显示在屏幕上。
这个释比较简单的做法,可以用一些传值操作练习练习。
下面是一些细节问题的处理:
1.在中缀转后缀时,可以将操作数存在字符数组中时中间用空格或什么隔开
还有处理多位数和小数的情况
将数组NSArray转为字符数组:

char mCode, exp[100];
for(int i = 0;i < _expressionArray.count;i++){
//        sscanf([[_expressionArray objectAtIndex:i] UTF8String], "%s", &mCode);
        NSString *temp = [_expressionArray objectAtIndex:i];
        mCode = [temp characterAtIndex:0];
        exp[i] = mCode;
    } 
    如果用如下sscanf程序会很不稳定
    sscanf([[_expressionArray objectAtIndex:i] UTF8String], "%s", &mCode);

将字符串转变为数组

_middleArray = [calculateString componentsSeparatedByString:@","];

2.Controller层里,将button的点击事件写进一个方法里,用tag值区别button
获取NSMutableString 的倒数第二个字符

_beforeString = [_mutableString substringFromIndex:[_mutableString length]- 2];
_beforeString = [_beforeString substringToIndex:[_beforeString length] - 1];

不能出现的情况:
0123,0000123
1.2.3
+/-/*//0123
操作符连接
括号不匹配
这些只需加一些判断

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值