IOS小型计算器实例代码

#import

@interface ViewController : UIViewController
@property(retain,nonatomic)UIButton *button;
@property(retain,nonatomic)UILabel *label;
@property(retain,nonatomic)NSMutableString *string;
@property(assign,nonatomic)double num1,num2,num3,num4;
@end

4.ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesizebutton,label,string,num1,num2,num3,num4;//string保存字符,显示数值。num1是存输入的数值,num2是存运算符前的数值,num3是运算结果,num4是判断进行何种运算
- (void)viewDidLoad
{
 

   [superviewDidLoad];
   
   //设置背景图片
    NSBundle*bundle=[NSBundle mainBundle];
    NSData*data=[[NSData alloc]initWithContentsOfFile:
                 [bundle pathForResource:@"1"ofType:@"jpg"]];//找到NSBundle的某一资源
    UIImage*img=[UIImage imageWithData:data];//创建了可用的图像对象
    [self.viewsetBackgroundColor:[UIColor colorWithPatternImage:img]];//UIColorcolorWithPatternImage:方法是把图片转化为color类型 将背景换做提供的图片
   
   //添加提示性文字
    UIAlertView*alex=[[UIAlertView alloc]initWithTitle:@"使用说明"message:@"只支持两数的计算以及在此基础上的计算,不支持连算。" delegate:nilcancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alexshow];
    [alexrelease];

    //创建标签
   self.label=[[UILabel alloc]initWithFrame:CGRectMake(90, 40, 200,50)];
    [self.viewaddSubview:label];
   self.label.backgroundColor=[UIColor clearColor];//清空背景颜色
   self.label.textColor=[UIColor blueColor];//字体颜色
   self.label.textAlignment=UITextAlignmentRight;//字体居右
   self.label.font=[UIFont systemFontOfSize:32.4];
   
   //添加1-9数字
    NSArray*array=[NSArrayarrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",nil];
    intn=0;
    for (inti=0; i<3; i++)
    {
       for (int j=0; j<3; j++)
       {
           self.button=[UIButtonbuttonWithType:UIButtonTypeRoundedRect];
           self.button.frame=CGRectMake(30+65*j, 150+65*i, 60, 60);
           [self.button setTitle:[array objectAtIndex:n++]forState:UIControlStateNormal];
           [self.view addSubview:button];
           [self.button addTarget:self action:@selector(one:)forControlEvents:UIControlEventTouchUpInside];
       }
    }
   //单独添加0
    UIButton*button0=[UIButton buttonWithType:UIButtonTypeRoundedRect];
   
    [button0setFrame:CGRectMake(30, 345, 60, 60)];
   
    [button0setTitle:@"0" forState:UIControlStateNormal];
   
    [button0addTarget:self action:@selector(one:)forControlEvents:UIControlEventTouchUpInside];
    [self.viewaddSubview:button0];
   
       
   //添加运算符
    NSArray*array1=[NSArray arrayWithObjects:@"+",@"-",@"*",@"/",nil];
    for (inti=0; i<4; i++)
    {
       UIButton *button1=[UIButtonbuttonWithType:UIButtonTypeRoundedRect];
       [button1 setFrame:CGRectMake(225, 150+65*i, 60, 60)];
       [button1 setTitle:[array1 objectAtIndex:i]forState:UIControlStateNormal];
       [self.view addSubview:button1];
       [button1 addTarget:self action:@selector(two:)forControlEvents:UIControlEventTouchUpInside];
    }
   
    //添加=
   
    UIButton*button2=[UIButton buttonWithType:UIButtonTypeRoundedRect];
   
    [button2setFrame:CGRectMake(160, 410, 125, 35)];
   
    [button2setTitle:@"=" forState:UIControlStateNormal];
   
    [button2addTarget:self action:@selector(go:)forControlEvents:UIControlEventTouchUpInside];
    [self.viewaddSubview:button2];
   
   //添加清除键
   
    UIButton*button3=[UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button3setFrame:CGRectMake(30, 410, 125, 35)];
    [button3setTitle:@"AC" forState:UIControlStateNormal];
    [button3addTarget:self action:@selector(clean:)forControlEvents:UIControlEventTouchUpInside];
    [self.viewaddSubview:button3];
   
    //添加.
   
    UIButton*button4=[UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button4setFrame:CGRectMake(95, 345, 60, 60)];
    [button4setTitle:@"." forState:UIControlStateNormal];
    [button4addTarget:self action:@selector(one:)forControlEvents:UIControlEventTouchUpInside];
    [self.viewaddSubview:button4];
   
    //后退
   
    UIButton*button5=[UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button5setFrame:CGRectMake(160, 345, 60, 60)];
    [button5setTitle:@"back" forState:UIControlStateNormal];
    [button5addTarget:self action:@selector(back:)forControlEvents:UIControlEventTouchUpInside];
   
    [self.viewaddSubview:button5];
   
   
   self.string=[[NSMutableString alloc]init];//初始化可变字符串,分配内存
    // Do anyadditional setup after loading the view, typically from anib.
}

-(void)one:(id)sender
{
   //保证是符号时在输入数字时隐藏
    if([self.string hasPrefix:@"+"]||[self.stringhasPrefix:@"-"]||[self.string hasPrefix:@"*"]||[self.stringhasPrefix:@"/"])//判断是否为运算符
    {
       [self.string setString:@""];//字符串清零
    }
    [self.stringappendString:[sender currentTitle]];//数字连续输入
   self.label.text=[NSString stringWithString:string];//显示数值
   self.num1=[self.label.text doubleValue];//保存输入的数值
   NSLog(@"%f",self.num1);
   
}

-(void)two:(id)sender
{
    [self.stringsetString:@""];//字符串清零
    [self.stringappendString:[sender currentTitle]];
   self.label.text=[NSString stringWithString:string];
   
   //判断输入是+号
    if([self.string hasPrefix:@"+"])//hasPrefix:判断字符串以加号开头
    {
       self.num2=self.num1;//将前面的数值保存在num2里
       self.num4=1;
    }
   //判断输入是-号
    elseif([self.string hasPrefix:@"-"])//hasPrefix:判断字符串以减号开头
    {
       self.num2=self.num1;
       self.num4=2;
    }
   //判断输入是*号
    elseif([self.string hasPrefix:@"*"])//hasPrefix:判断字符串以乘号开头
    {
       self.num2=self.num1;
       self.num4=3;
    }
   //判断输入是/号
    elseif([self.string hasPrefix:@"/"])//hasPrefix:判断字符串以除号开头
    {
       self.num2=self.num1;
       self.num4=4;
    }
}


-(void)go:(id)sender
{
       //判断输入是+号
    if(self.num4==1)
    {
       self.num3=self.num2+[self.label.textdoubleValue];//[self.label.text doubleValue]是每次后输入的数字
       self.label.text=[NSStringstringWithFormat:@"%f",self.num3];//显示结果
       self.num1=[self.label.text doubleValue];//为了可以连加。保存结果
       self.num3=0;
       [self.string setString:@""];//保证每次结果正确输出后,再次计算,不用按清除键
    }
   //判断输入是-号
    elseif(self.num4==2)
    {
       self.num3=self.num2-[self.label.text doubleValue];
       self.label.text=[NSString stringWithFormat:@"%f",self.num3];
       self.num1=[self.label.text doubleValue];
       self.num3=0;
       [self.string setString:@""];
    }
   //判断输入是*号
    elseif(self.num4==3)
    {
       self.num3=self.num2*[self.label.text doubleValue];
       self.label.text=[NSString stringWithFormat:@"%f",self.num3];
       self.num1=[self.label.text doubleValue];
       self.num3=0;
       [self.string setString:@""];
    }
   //判断输入是/号
    elseif(self.num4==4)
    {
       self.num3=self.num2/[self.label.text doubleValue];
       self.label.text=[NSStringstringWithFormat:@"%f",self.num3];//计算结果显示出来
       self.num1=[self.label.text doubleValue];//把计算的结果保存一下
       self.num3=0;
       [self.string setString:@""];
    }
}

//当按下清除建时,所有数据清零
-(void)clean:(id)sender{
    [self.stringsetString:@""];//清空字符串
   self.num3=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
{
    [superviewDidUnload];
    // Releaseany retained subviews of the main view.
}

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return(interfaceOrientation !=UIInterfaceOrientationPortraitUpsideDown);
}

@end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值