IOS做一个简单计算器

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

//声明非原创

步骤:

1.打开Xcode,单机Creat a new Xcode PRoject

2.左边选择ios下application,右边选择single view Application

3.填写项目名称单机Next

4.ViewController.h中定义成员和方法

//

// ViewController.h

// TestCalculator4

//

// Created by heyonggang on 13-11-28.

// Copyright (c) 2013年 MiracleHe. All rights reserved.

//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property(retain,nonatomic) UIButton *button;

@property(retain,nonatomic) UILabel *label;

@property(retain,nonatomic) NSMutableString *string; //NSMutableString用来处理可变对象,如需要处理字符串并更改字符串中的字符

@property(assign,nonatomic) double num1,num2;

@property(assign,nonatomic) NSString *str;

@end

5.ViewController.m

//

// ViewController.m

// TestCalculator4

//

// Created by heyonggang on 13-11-28.

// Copyright (c) 2013年 MiracleHe. All rights reserved.

//

#import "ViewController.h"

#import <QuartzCore/QuartzCore.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad

{

[super viewDidLoad];

//创建标签

self.label=[[UILabel alloc]initWithFrame:CGRectMake(90, 40, 200, 50)];

[self.view addSubview:_label];

self.label.backgroundColor=[UIColor greenColor]; //设置背景颜色

self.label.textColor=[UIColor blackColor]; //字体颜色

//self.label.textAlignment = UITextAlignmentRight; //字体居右

self.label.textAlignment = NSTextAlignmentCenter;

self.label.font=[UIFont systemFontOfSize:32.4]; //设置字体

//添加1-9数字

NSArray *array=[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9", nil];

int n=0;

for (int i=0; i<3; i++)

{

for (int j=0; j<3; j++)

{

self.button=[UIButton buttonWithType:UIButtonTypeRoundedRect];

self.button.frame=CGRectMake(30+65*j, 150+65*i, 60, 60);

[self.button setTitle:[array objectAtIndex:n++] forState:UIControlStateNormal]; //注意:[array objectAtIndex:n++]

[self.view addSubview:_button];

[self.button addTarget:self action:@selector(shuzi:) forControlEvents:UIControlEventTouchUpInside]; //addTarget:self 的意思是说,这个方法在本类中也可以传入其他类的指针

}

}

//单独添加0

UIButton *button0=[UIButton buttonWithType:UIButtonTypeCustom]; //创建一个圆角矩形的按钮

/*

CALayer *layer = button0.layer;

[layer setMasksToBounds:YES];

[layer setCornerRadius:5.0];

button0.layer.borderColor = [UIColor lightGrayColor].CGColor;

button0.layer.borderWidth = 1.0f;

*/

[button0 setFrame:CGRectMake(30, 345, 60, 60)]; //设置button在view上的位置

//也可以这样用:button0.frame:CGRectMake(30, 345, 60, 60);

[button0 setTitle:@"0" forState:UIControlStateNormal]; //设置button主题

button0.titleLabel.textColor = [UIColor blackColor]; //设置0键的颜色

[button0 addTarget:self action:@selector(shuzi:) forControlEvents:UIControlEventTouchUpInside]; //按下按钮,并且当手指离开离开屏幕的时候触发这个事件

//触发了这个事件后,执行shuzi方法,action:@selector(shuzi:)

[self.view addSubview:button0]; //显示控件

//添加运算符

NSArray *array1=[NSArray arrayWithObjects:@"+",@"-",@"*",@"/",nil];

for (int i=0; i<4; i++)

{

UIButton *button1=[UIButton buttonWithType:UIButtonTypeRoundedRect];

[button1 setFrame:CGRectMake(225, 150+65*i, 60, 60)];

[button1 setTitle:[array1 objectAtIndex:i] forState:UIControlStateNormal];

//[array1 objectAtIndex:i]为获取按钮的属性值

[self.view addSubview:button1];

[button1 addTarget:self action:@selector(go:) forControlEvents:UIControlEventTouchUpInside];

}

//添加=

UIButton *button2=[UIButton buttonWithType:UIButtonTypeRoundedRect];

[button2 setFrame:CGRectMake(160, 410, 125, 35)];

[button2 setTitle:@"=" forState:UIControlStateNormal];

[button2 addTarget:self action:@selector(go:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button2];

//添加清除键

UIButton *button3=[UIButton buttonWithType:UIButtonTypeRoundedRect];

[button3 setFrame:CGRectMake(30, 410, 125, 35)];

[button3 setTitle:@"AC" forState:UIControlStateNormal];

[button3 addTarget:self action:@selector(clean:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button3];

//添加.

UIButton *button4=[UIButton buttonWithType:UIButtonTypeRoundedRect];

[button4 setFrame:CGRectMake(95, 345, 60, 60)];

[button4 setTitle:@"." forState:UIControlStateNormal];

[button4 addTarget:self action:@selector(shuzi:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button4];

//后退

UIButton *button5=[UIButton buttonWithType:UIButtonTypeRoundedRect];

[button5 setFrame:CGRectMake(160, 345, 60, 60)];

[button5 setTitle:@"back" forState:UIControlStateNormal];

[button5 addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button5];

self.string=[[NSMutableString alloc]init];//初始化可变字符串,分配内存

self.str = [[NSString alloc]init];

// Do any additional setup after loading the view, typically from a nib.

}

//0-9方法

- (void)shuzi:(id)sender

{

[self.string appendString:[sender currentTitle]]; //数字连续输入

self.label.text=[NSString stringWithString:_string]; //显示数值

self.num1=[self.label.text doubleValue]; //保存输入的数值

NSLog(@"self.num1 is %f",self.num1);

}

//计算方法

-(void)go:(id)sender

{

if ([self.str isEqualToString:@""])//当str里为空

{

self.num2=self.num1;

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithString:_string]; //只要是符号就显示数值

[self.string setString:@""]; //字符串清零

self.str=[sender currentTitle]; //保存运算符为了作判断作何种运算

NSLog(@"%@",_str);

[self.string appendString:self.str];

self.label.text=[NSString stringWithString:_string]; //显示数值

[self.string setString:@""]; //字符串清零

}

else

{

//输出上次计算结果

if ([self.str isEqualToString:@"+"])//之前的符号是+

{

[self.string setString:@""];//字符串清零

self.num2+=self.num1;//num2是运算符号左边的数值,还是计算结果

//输出上次结果后判断这次输入的是何符号

if ([[sender currentTitle]isEqualToString:@"="])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

self.str=@"";

}

else if ([[sender currentTitle]isEqualToString:@"+"]||[[sender currentTitle]isEqualToString:@"-"]||[[sender currentTitle]isEqualToString:@"*"]||[[sender currentTitle]isEqualToString:@"/"])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

[self.string setString:@""]; //字符串清零

self.str=[sender currentTitle];//保存运算符为了作判断作何种运算

NSLog(@"%@",_str);

[self.string appendString:self.str];

[self.string setString:@""];//字符串清零

}

}

else if ([self.str isEqualToString:@"-"])//之前的符号是-

{

[self.string setString:@""];//字符串清零

self.num2-=self.num1;

//输出上次结果后判断这次输入的是何符号

if ([[sender currentTitle]isEqualToString:@"="])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

self.str=@"";

}

else if ([[sender currentTitle]isEqualToString:@"+"]||[[sender currentTitle]isEqualToString:@"-"]||[[sender currentTitle]isEqualToString:@"*"]||[[sender currentTitle]isEqualToString:@"/"])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

[self.string setString:@""];//字符串清零

self.str=[sender currentTitle];//保存运算符为了作判断作何种运算

NSLog(@"%@",_str);

[self.string appendString:self.str];

[self.string setString:@""];//字符串清零

}

}

else if([self.str hasprefix:@"*"])//之前的符号是* hasPrefix:方法的功能是判断创建的字符串内容是否以某个字符开始

{

[self.string setString:@""];//字符串清零

self.num2*=self.num1;

//输出上次结果后判断这次输入的是何符号

if ([[sender currentTitle] isEqualToString:@"="])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

self.str=@"";

}

else if ([[sender currentTitle]isEqualToString:@"+"]||[[sender currentTitle]isEqualToString:@"-"]||[[sender currentTitle]isEqualToString:@"*"]||[[sender currentTitle]isEqualToString:@"/"])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

[self.string setString:@""]; //字符串清零

self.str=[sender currentTitle]; //保存运算符为了作判断作何种运算

NSLog(@"%@",_str);

[self.string appendString:self.str]; //在字符串后增加新的东西,[a appendString:]

[self.string setString:@""]; //字符串清零

}

}

else if ([self.str isEqualToString:@"/"])//之前的符号是/

{

[self.string setString:@""];//字符串清零

self.num2/=self.num1;

//判断输出上次结果后判断这次输入的是何符号

if ([[sender currentTitle]isEqualToString:@"="])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

self.str=@"";

}

else if ([[sender currentTitle]isEqualToString:@"+"]||[[sender currentTitle]isEqualToString:@"-"]||[[sender currentTitle]isEqualToString:@"*"]||[[sender currentTitle]isEqualToString:@"/"])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

[self.string setString:@""];//字符串清零

self.str=[sender currentTitle];//保存运算符为了作判断作何种运算

NSLog(@"%@",_str);

[self.string appendString:self.str];

[self.string setString:@""];//字符串清零

}

}

}

}

//当按下清除建时,所有数据清零

-(void)clean:(id)sender

{

[self.string setString:@""];//清空字符

self.num1=0;

self.num2=0;

self.label.text=@"0";//保证下次输入时清零

}

//返回键

-(void)back:(id)sender

{

if (![self.label.text isEqualToString:@""])//判断不是空

{

[self.string deleteCharactersInRange:NSMakeRange

([self.string length]-1,1)];//删除最后一个字符

self.label.text=[NSString stringWithString:_string];//显示结果

}

}

- (void)viewDidUnload

{

[super viewDidUnload];

// Release any retained subviews of the main view.

}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

---恢复内容结束---

步骤:

1.打开Xcode,单机Creat a new Xcode project

2.左边选择ios下Application,右边选择single view Application

3.填写项目名称单机Next

4.ViewController.h中定义成员和方法

//

// ViewController.h

// TestCalculator4

//

// Created by heyonggang on 13-11-28.

// Copyright (c) 2013年 MiracleHe. All rights reserved.

//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property(retain,nonatomic) UIButton *button;

@property(retain,nonatomic) UILabel *label;

@property(retain,nonatomic) NSMutableString *string; //NSMutableString用来处理可变对象,如需要处理字符串并更改字符串中的字符

@property(assign,nonatomic) double num1,num2;

@property(assign,nonatomic) NSString *str;

@end

5.ViewController.m

//

// ViewController.m

// TestCalculator4

//

// Created by heyonggang on 13-11-28.

// Copyright (c) 2013年 MiracleHe. All rights reserved.

//

#import "ViewController.h"

#import <QuartzCore/QuartzCore.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad

{

[super viewDidLoad];

//创建标签

self.label=[[UILabel alloc]initWithFrame:CGRectMake(90, 40, 200, 50)];

[self.view addSubview:_label];

self.label.backgroundColor=[UIColor greenColor]; //设置背景颜色

self.label.textColor=[UIColor blackColor]; //字体颜色

//self.label.textAlignment = UITextAlignmentRight; //字体居右

self.label.textAlignment = NSTextAlignmentCenter;

self.label.font=[UIFont systemFontOfSize:32.4]; //设置字体

//添加1-9数字

NSArray *array=[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9", nil];

int n=0;

for (int i=0; i<3; i++)

{

for (int j=0; j<3; j++)

{

self.button=[UIButton buttonWithType:UIButtonTypeRoundedRect];

self.button.frame=CGRectMake(30+65*j, 150+65*i, 60, 60);

[self.button setTitle:[array objectAtIndex:n++] forState:UIControlStateNormal]; //注意:[array objectAtIndex:n++]

[self.view addSubview:_button];

[self.button addTarget:self action:@selector(shuzi:) forControlEvents:UIControlEventTouchUpInside]; //addTarget:self 的意思是说,这个方法在本类中也可以传入其他类的指针

}

}

//单独添加0

UIButton *button0=[UIButton buttonWithType:UIButtonTypeCustom]; //创建一个圆角矩形的按钮

/*

CALayer *layer = button0.layer;

[layer setMasksToBounds:YES];

[layer setCornerRadius:5.0];

button0.layer.borderColor = [UIColor lightGrayColor].CGColor;

button0.layer.borderWidth = 1.0f;

*/

[button0 setFrame:CGRectMake(30, 345, 60, 60)]; //设置button在view上的位置

//也可以这样用:button0.frame:CGRectMake(30, 345, 60, 60);

[button0 setTitle:@"0" forState:UIControlStateNormal]; //设置button主题

button0.titleLabel.textColor = [UIColor blackColor]; //设置0键的颜色

[button0 addTarget:self action:@selector(shuzi:) forControlEvents:UIControlEventTouchUpInside]; //按下按钮,并且当手指离开离开屏幕的时候触发这个事件

//触发了这个事件后,执行shuzi方法,action:@selector(shuzi:)

[self.view addSubview:button0]; //显示控件

//添加运算符

NSArray *array1=[NSArray arrayWithObjects:@"+",@"-",@"*",@"/",nil];

for (int i=0; i<4; i++)

{

UIButton *button1=[UIButton buttonWithType:UIButtonTypeRoundedRect];

[button1 setFrame:CGRectMake(225, 150+65*i, 60, 60)];

[button1 setTitle:[array1 objectAtIndex:i] forState:UIControlStateNormal];

//[array1 objectAtIndex:i]为获取按钮的属性值

[self.view addSubview:button1];

[button1 addTarget:self action:@selector(go:) forControlEvents:UIControlEventTouchUpInside];

}

//添加=

UIButton *button2=[UIButton buttonWithType:UIButtonTypeRoundedRect];

[button2 setFrame:CGRectMake(160, 410, 125, 35)];

[button2 setTitle:@"=" forState:UIControlStateNormal];

[button2 addTarget:self action:@selector(go:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button2];

//添加清除键

UIButton *button3=[UIButton buttonWithType:UIButtonTypeRoundedRect];

[button3 setFrame:CGRectMake(30, 410, 125, 35)];

[button3 setTitle:@"AC" forState:UIControlStateNormal];

[button3 addTarget:self action:@selector(clean:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button3];

//添加.

UIButton *button4=[UIButton buttonWithType:UIButtonTypeRoundedRect];

[button4 setFrame:CGRectMake(95, 345, 60, 60)];

[button4 setTitle:@"." forState:UIControlStateNormal];

[button4 addTarget:self action:@selector(shuzi:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button4];

//后退

UIButton *button5=[UIButton buttonWithType:UIButtonTypeRoundedRect];

[button5 setFrame:CGRectMake(160, 345, 60, 60)];

[button5 setTitle:@"back" forState:UIControlStateNormal];

[button5 addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button5];

self.string=[[NSMutableString alloc]init];//初始化可变字符串,分配内存

self.str = [[NSString alloc]init];

// Do any additional setup after loading the view, typically from a nib.

}

//0-9方法

- (void)shuzi:(id)sender

{

[self.string appendString:[sender currentTitle]]; //数字连续输入

self.label.text=[NSString stringWithString:_string]; //显示数值

self.num1=[self.label.text doubleValue]; //保存输入的数值

NSLog(@"self.num1 is %f",self.num1);

}

//计算方法

-(void)go:(id)sender

{

if ([self.str isEqualToString:@""])//当str里为空

{

self.num2=self.num1;

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithString:_string]; //只要是符号就显示数值

[self.string setString:@""]; //字符串清零

self.str=[sender currentTitle]; //保存运算符为了作判断作何种运算

NSLog(@"%@",_str);

[self.string appendString:self.str];

self.label.text=[NSString stringWithString:_string]; //显示数值

[self.string setString:@""]; //字符串清零

}

else

{

//输出上次计算结果

if ([self.str isEqualToString:@"+"])//之前的符号是+

{

[self.string setString:@""];//字符串清零

self.num2+=self.num1;//num2是运算符号左边的数值,还是计算结果

//输出上次结果后判断这次输入的是何符号

if ([[sender currentTitle]isEqualToString:@"="])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

self.str=@"";

}

else if ([[sender currentTitle]isEqualToString:@"+"]||[[sender currentTitle]isEqualToString:@"-"]||[[sender currentTitle]isEqualToString:@"*"]||[[sender currentTitle]isEqualToString:@"/"])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

[self.string setString:@""]; //字符串清零

self.str=[sender currentTitle];//保存运算符为了作判断作何种运算

NSLog(@"%@",_str);

[self.string appendString:self.str];

[self.string setString:@""];//字符串清零

}

}

else if ([self.str isEqualToString:@"-"])//之前的符号是-

{

[self.string setString:@""];//字符串清零

self.num2-=self.num1;

//输出上次结果后判断这次输入的是何符号

if ([[sender currentTitle]isEqualToString:@"="])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

self.str=@"";

}

else if ([[sender currentTitle]isEqualToString:@"+"]||[[sender currentTitle]isEqualToString:@"-"]||[[sender currentTitle]isEqualToString:@"*"]||[[sender currentTitle]isEqualToString:@"/"])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

[self.string setString:@""];//字符串清零

self.str=[sender currentTitle];//保存运算符为了作判断作何种运算

NSLog(@"%@",_str);

[self.string appendString:self.str];

[self.string setString:@""];//字符串清零

}

}

else if([self.str hasPrefix:@"*"])//之前的符号是* hasPrefix:方法的功能是判断创建的字符串内容是否以某个字符开始

{

[self.string setString:@""];//字符串清零

self.num2*=self.num1;

//输出上次结果后判断这次输入的是何符号

if ([[sender currentTitle] isEqualToString:@"="])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

self.str=@"";

}

else if ([[sender currentTitle]isEqualToString:@"+"]||[[sender currentTitle]isEqualToString:@"-"]||[[sender currentTitle]isEqualToString:@"*"]||[[sender currentTitle]isEqualToString:@"/"])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

[self.string setString:@""]; //字符串清零

self.str=[sender currentTitle]; //保存运算符为了作判断作何种运算

NSLog(@"%@",_str);

[self.string appendString:self.str]; //在字符串后增加新的东西,[a appendString:]

[self.string setString:@""]; //字符串清零

}

}

else if ([self.str isEqualToString:@"/"])//之前的符号是/

{

[self.string setString:@""];//字符串清零

self.num2/=self.num1;

//判断输出上次结果后判断这次输入的是何符号

if ([[sender currentTitle]isEqualToString:@"="])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

self.str=@"";

}

else if ([[sender currentTitle]isEqualToString:@"+"]||[[sender currentTitle]isEqualToString:@"-"]||[[sender currentTitle]isEqualToString:@"*"]||[[sender currentTitle]isEqualToString:@"/"])

{

NSLog(@"self.num2 is %f",self.num2);

self.label.text=[NSString stringWithFormat:@"%f",self.num2];

[self.string setString:@""];//字符串清零

self.str=[sender currentTitle];//保存运算符为了作判断作何种运算

NSLog(@"%@",_str);

[self.string appendString:self.str];

[self.string setString:@""];//字符串清零

}

}

}

}

//当按下清除建时,所有数据清零

-(void)clean:(id)sender

{

[self.string setString:@""];//清空字符

self.num1=0;

self.num2=0;

self.label.text=@"0";//保证下次输入时清零

}

//返回键

-(void)back:(id)sender

{

if (![self.label.text isEqualToString:@""])//判断不是空

{

[self.string deleteCharactersInRange:NSMakeRange

([self.string length]-1,1)];//删除最后一个字符

self.label.text=[NSString stringWithString:_string];//显示结果

}

}

- (void)viewDidUnload

{

[super viewDidUnload];

// Release any retained subviews of the main view.

}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航