首页 > 代码库 > 简易计算器制作

简易计算器制作

@interface EricAppDelegate ()
{
    UIView *_containView;
    UILabel *_label;
    UIButton *_butt;
    NSMutableString *str;
}
@property(assign,nonatomic)double num1,num2,num3,num4;

@end
@implementation EricAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    _containView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 568)];
    _containView.backgroundColor = [UIColor orangeColor];
    [self.window addSubview:_containView];
    [_containView release];
    // Override point for customization after application launch.
    [self calculator];
    
    
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}

//计算器
- (void)calculator
{
    NSArray *arr = [NSArray arrayWithObjects:@"7",@"8", @"9",@"/",@"4",@"5",@"6",@"*",@"1",@"2",@"3",@"-",@".",@"0",@"=",@"+",nil];
    str = [[NSMutableString alloc] initWithFormat:@""];
    int n = 0;
    for (int i = 0; i < 4; i ++) {
        for (int j = 0; j < 4; j++){
            _butt = [UIButton buttonWithType:UIButtonTypeSystem];
            _butt.frame = CGRectMake(3 + j *80, 270 + i *75, 75, 70);
            _butt.backgroundColor = [UIColor grayColor];
            _butt.layer.cornerRadius = 20;
            _butt.titleLabel.font = [UIFont systemFontOfSize:35];
            [_butt setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
            [_butt setTitle:arr[n++ ] forState:UIControlStateNormal];
            _butt.tag = 100 + n;
            [_containView addSubview:_butt];
        }
    }
    //显示窗口
    _label = [[UILabel alloc] initWithFrame:CGRectMake(3, 80, 313, 100)];
    _label.layer.cornerRadius = 5;
    _label.layer.masksToBounds= YES;
    _label.textAlignment= NSTextAlignmentRight;
    _label.textColor = [UIColor blackColor];
    _label.font = [UIFont systemFontOfSize:30];
    _label.backgroundColor = [UIColor greenColor];
    [_containView addSubview:_label];
    [_label release];
    //清除按钮
    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
    button.frame = CGRectMake(243, 193, 75, 70);
    button.backgroundColor = [UIColor grayColor];
    button.layer.cornerRadius = 20;
    button.titleLabel.font = [UIFont systemFontOfSize:25];
    [button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
    [button setTitle:@"C" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(clear:) forControlEvents:UIControlEventTouchUpInside];
    [_containView addSubview:button];
    //回删按钮
    UIButton *goButton = [UIButton buttonWithType:UIButtonTypeSystem];
    goButton.frame = CGRectMake(163, 193, 75, 70);
    goButton.backgroundColor = [UIColor grayColor];
    goButton.layer.cornerRadius = 20;
    goButton.titleLabel.font = [UIFont systemFontOfSize:25];
    [goButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
    [goButton setTitle:@"Dele" forState:UIControlStateNormal];
    [goButton addTarget:self action:@selector(delete:) forControlEvents:UIControlEventTouchUpInside];
    [_containView addSubview:goButton];

    
    //数字按钮
    NSArray *arra = [NSArray arrayWithObjects:(UIButton *) [_containView viewWithTag:101],(UIButton *) [_containView viewWithTag:102],(UIButton *) [_containView viewWithTag:103],(UIButton *) [_containView viewWithTag:105],(UIButton *) [_containView viewWithTag:106],(UIButton *) [_containView viewWithTag:107],(UIButton *) [_containView viewWithTag:109],(UIButton *) [_containView viewWithTag:110],(UIButton *) [_containView viewWithTag:111],(UIButton *) [_containView viewWithTag:114], nil];
    for (int i = 0; i < 10; i++) {
        [arra[i] addTarget:self action:@selector(number:) forControlEvents:UIControlEventTouchUpInside];
    }
    //运算符按钮
    NSArray *array = [NSArray arrayWithObjects:(UIButton *) [_containView viewWithTag:104],(UIButton *) [_containView viewWithTag:108],(UIButton *) [_containView viewWithTag:112],(UIButton *) [_containView viewWithTag:116], nil];
    for (int i = 0; i < 4; i++) {
        [array[i] addTarget:self action:@selector(operator:) forControlEvents:UIControlEventTouchUpInside];
    }
  //运算结果
    UIButton *but =(UIButton *) [_containView viewWithTag:115];
    [but addTarget:self action:@selector(cal:) forControlEvents:UIControlEventTouchUpInside];
    self.num1= [str doubleValue];
    //点运算
    UIButton *butt =(UIButton *) [_containView viewWithTag:113];
    [butt addTarget:self action:@selector(number:) forControlEvents:UIControlEventTouchUpInside];
    [str setString:@""];
}

- (void)clear:(UIButton *)clear
{
       _label.text = @"0";
    [str setString:@""];
    self.num3=0;
}
- (void)delete:(UIButton *)del
{
    if ([str length] !=0) {
        [str deleteCharactersInRange:NSMakeRange([str length] - 1, 1)];
    }
    _label.text = str;
}
//计算操作


-(void)number:(UIButton *)but
    {
        //保证是符号时在输入数字时隐藏
        if ([but.currentTitle hasPrefix:@"+"]||[but.currentTitle hasPrefix:@"-"]||[but.currentTitle hasPrefix:@"*"]||[but.currentTitle hasPrefix:@"/"])//判断是否为运算符
        {
            _label.text = @" ";
           [str setString:@""];//字符串清零
        }else{
            //判断第一次输入的是否是.  , 若是,则添加个0,
            if ([str isEqualToString:@""] &&[but.currentTitle isEqualToString:@"."]) {
                [str appendFormat:@"0%@",but.currentTitle];
            }else{
                [str  appendFormat: @"%@",but.currentTitle];
            };
        }
        _label.text =str;
        self.num1 = [str doubleValue];
    }

- (void)operator:(UIButton *)but
{
    [str setString:@""];
      if ([but.currentTitle hasPrefix:@"+"]){
          self.num2 = self.num1;
          self.num4 = 1;
          }
    if ([but.currentTitle hasPrefix:@"-"]){
        self.num2 = self.num1;
        self.num4 = 2;
    }
    if ([but.currentTitle hasPrefix:@"*"]){
        self.num2 = self.num1;
        self.num4 = 3;
    }
    if ([but.currentTitle hasPrefix:@"/"]){
        self.num2 = self.num1;
        self.num4 = 4;
    }
}
- (void)cal:(id)sender
{
    if (self.num4 ==1) {
      self.num3=  self.num1 + self.num2;
        _label.text = [NSString stringWithFormat:@"%g",self.num3];
        self.num1 = self.num3;
        [str setString:@""];
    }
    if (self.num4 ==2) {
        self.num3=  self.num2 - self.num1;
        _label.text = [NSString stringWithFormat:@"%g",self.num3];
        self.num1 = self.num3;
        [str setString:@""];
    }
    if (self.num4 ==3) {
        self.num3=  self.num1 * self.num2;
        _label.text = [NSString stringWithFormat:@"%g",self.num3];
        self.num1 = self.num3;
        [str setString:@""];
    }
    if (self.num4 ==4) {
        self.num3=  self.num2 / self.num1;
        _label.text = [NSString stringWithFormat:@"%g",self.num3];
        self.num1 = self.num3;
        [str setString:@""];
    }
    
}

简易计算器制作