1228.1——计算器(未使用MVC设计模式)
#import "ViewController.h"
typedef enum{
kStausNum,
kStausOperation
}kStaus;
typedef enum{
kOperationTypeAdd = 1,
kOperationTypeMinus,
kOperationTypeMultiply,
kOperationTypeDevide,
kOperationTypeEqual,
kOperationTypeNone
}kOperationType;
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *result_label;
@property (nonatomic,assign) long long firstParam; //记录第一个参数
@property (nonatomic,assign) kOperationType lastOperation;//保存上一次的操作数
@property (nonatomic,assign) BOOL status;//记录当前的状态
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//赋初值
self.firstParam = 0;
self.lastOperation = kOperationTypeNone;
self.status = kStausNum;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)numButtonDidClicked:(UIButton *)sender {
//获取点击的按钮上的数字
int num = [sender.titleLabel.text intValue];
//判断继续拼接还是单独显示
long long showNum;
if (self.status == kStausNum) {
//获取之前显示的结果
long long orgNum = [self.result_label.text longLongValue];
//计算最终显示结果
showNum = orgNum * 10 + num;
}else{
showNum = num;
self.status = kStausNum;
}
//显示结果
self.result_label.text = [NSString stringWithFormat:@"%lld",showNum];
}
//操作键+-*÷
- (IBAction)operationButtonDidClicked:(UIButton *)sender {
if (self.status != kStausOperation) {
self.status = kStausOperation;
}
self.status = kStausOperation;
//有两种情况
//1.第一次操作,只需保存只一次操作
//2.前面有操作需要计算,并保存这一次的操作
//3.判断是不是第一次操作
if (self.lastOperation != kOperationTypeNone) {
//2.前面有操作需要计算,保存这次操作
[self calculate];
}else{
//第一个参数输入完毕 保存
self.firstParam = [self.result_label.text longLongValue];
}
//保存这一次操作
if (sender.tag == kOperationTypeEqual) {
self.lastOperation = kOperationTypeNone;
}else{
self.lastOperation = (kOperationType)sender.tag;//自定义tag的值
}
}
//计算结果
-(void)calculate{
int secondParam = [self.result_label.text intValue];
long long result;
switch (self.lastOperation) {
case kOperationTypeAdd:
result = self.firstParam + secondParam;
break;
case kOperationTypeMinus:
result = self.firstParam - secondParam;
break;
case kOperationTypeMultiply:
result = self.firstParam * secondParam;
break;
case kOperationTypeDevide:
result = self.firstParam / secondParam;
break;
default:
break;
}
//显示最终结果
self.result_label.text = [NSString stringWithFormat:@"%lld",result];
//当前的结果就是下一次的第一个参数的值
self.firstParam = result;
//更改操作符
self.lastOperation = kOperationTypeNone;
}
- (IBAction)resetButtonDidClicked:(UIButton *)sender {
self.result_label.text = @"0";
self.lastOperation = kOperationTypeNone;
self.status = kStausNum;
}
@end
1228.1——计算器(未使用MVC设计模式)的更多相关文章
- request对象常用API 获取请求参数的值 request应用 MVC设计模式
1 request对象常用API 1)表示web浏览器向web服务端的请求 2)url表示访问web应用的完整路径:http://localhost:8080/day06/Demo1 ...
- 第80节:Java中的MVC设计模式
第80节:Java中的MVC设计模式 前言 了解java中的mvc模式.复习以及回顾! 事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn ...
- javaweb三大框架和MVC设计模式
javaweb三大框架和MVC设计模式 转载,原文请见https://blog.csdn.net/sunpeng19960715/article/details/50890705 一.MVC设计模式 ...
- asp.net MVC设计模式中使用iTextSharp实现html字符串生成PDF文件
因个人需求,需要将html格式转换成PDF并加上水印图片.于是乎第一次接触这种需求的小菜鸟博主我,在某度搜索引擎上不断的查阅关键字资料.踩坑,终于有了一个相应的解决方案.以下是解决步骤,记录下来方便以 ...
- 转载 javaweb三大框架和MVC设计模式 (自己加拉些内容)
javaweb三大框架和MVC设计模式 一.MVC设计模式 1.MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基 ...
- MVC设计模式与Java Web经典三层架构
MVC设计模式 MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...
- 浅谈javaweb三大框架和MVC设计模式
一.MVC设计模式 1.MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(Vie ...
- AngularJS_01之基础概述、设计原则及MVC设计模式
1.AngularJS: 开源的JS框架,用来开发单一页面应用,以及数据操作频繁的场景:2.设计原则: ①YAGNI原则:You Aren't Gonna Need It! 不要写不需要的代码! ②K ...
- 谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式
作为一名java工程狮,大家肯定经历过很多面试,但每次几乎都会被问到什么是MVC设计模式,你是怎么理解MVC的类似这样的一系列关于MVC的问题. [出现频率] [关键考点] MVC的含义 MVC的结构 ...
随机推荐
- JAVA 对象引用,以及对象赋值(转)
原文链接:http://zwmf.iteye.com/blog/1738574 关键字: java对象 引用 Java对象及其引用 关于对象与引用之间的一些基本概念. 初学Java时,在很长一段时间里 ...
- C#按钮打开浏览器,网址
1.加入 using System.Diagnostics; 2. private void button_main_baidu_Click(object sender, EventArgs e) { ...
- CoreData学习-最好的一片文章
CoreData学习-最好的一片文章 分类: IOS重新上路2014-05-25 18:00 1937人阅读 评论(0) 收藏 举报 目录(?)[+] 写的很好的一篇教程,我什么时候能写出这么 ...
- 执行yiic webapp命令时报错:php.exe不是内部或外部命令,也不是可运行的程序
在执行 yiic webapp ../abc 命令时报错: “php.exe”不是内部或外部命令,也不是可运行的程序 或批处理文件. 这是因为yiic批处理程序找不到php.exe的执行路径引起的. ...
- android的微信签名
目标: 已经在微信官网申请了账号了,想要在上面开发应用,必须首先对应用进行审核.在审核之前,需要填写应用的相关信息,包括名称.图标.用途说明.签名等. 下面介绍如何获取程序的签名. 解决方案: 选择程 ...
- Qt工具知多少
一级题目: Qt Designer — 所见即所得的界面设计工具, 可以用拖拽的方式将控件排布在界面上,支持layout, 支持signal/slot编辑. 生成的文件保存为ui格式, ui是xml格 ...
- PowerShell 管道和对象成员
2.1 管道 在各种现代的shell中,均支持管道的概念. 管道的最大特点就是: 前一个命令的输出作为后一个命令的输入.cmd.bash均支持管道的概念,这里我就不多说了,下面我们说说PS中 管道 ...
- Java异常的使用
1.exception的分类 java将异常分为两种,checked exception和unchecked exception(一般指runtimeException). checked excep ...
- c# list exists(contains) delegate 委托判断 元素是否在LIST中存在
static void Main(string[] args) { List<GoodsInfo> list = new List<GoodsIn ...
- Windows通用应用平台
什么是 UWP? 很多程序员都有一个梦想:希望自己开发的软件能够轻而易举的在所有平台上运行,而不是把同样的需求,用不同的技术.工具重新开发才能够运行在所有平台上.这就是跨平台,很多软件从业者都在为这个 ...