Object-C,四则运算计算器


下面是是一个比较复杂的类。

定义一个四则运算计算器Caculator的接口和实现。

在main函数中,让用户输入四则运算表达式,比如a+b,a-b。

最后,在控制台输出结果。


用到的语法:接口、类的定义,实例方法,switch-case语句。


/

/
//  main.m
//  switch-case
//
//  Created by fansunion on 15/11/15.
//  Copyright (c) 2015年 demo. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Caculator : NSObject
-(void)setValue:(double)value;
-(double)getResult;

-(void)add:(double)value;
-(void)sub:(double)value;
-(void)multiply:(double)value;
-(void)divide:(double)value;

@end

@implementation Caculator

{
    double value;
}

-(void)setValue:(double)v{
    value=v;
}

-(void)add:(double)v{
    value+=v;
}

-(void)sub:(double)v{
    value-=v;
}
-(void)multiply:(double)v{
    value*=v;
}
-(void)divide:(double)v{
    value/= v;
}
-(double)getResult{
return value;
}


@end
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        double value = 0;
        double v=0;
        char operator;
        Caculator *caculator =[[Caculator alloc]init];
        NSLog(@"请输入表达式!");
        scanf("%lf %c %lf",&value,&operator,&v);
        [caculator setValue:value];
        switch(operator){
                case '+':
                [caculator add:v];
                break;
                case '-':
                [caculator sub:v];
                break;
                case '*':
                [caculator multiply:v];
                break;
                case '/':
                [caculator divide:v];
                break;
                default:
                NSLog(@"未知的操作符");
                break;
        }
        NSLog(@"%.2f",[caculator getResult]);
    }
    return 0;
}


加法,2015+2014=4029

2015-11-15 17:23:13.722 switch-case[1684:89106] 请输入表达式!

2015+2014

2015-11-15 17:23:21.586 switch-case[1684:89106] 4029.00

Program ended with exit code: 0


减法,2015-2020=-5

2015-11-15 17:23:44.579 switch-case[1688:89497] 请输入表达式!

2015-2020

2015-11-15 17:23:55.500 switch-case[1688:89497] -5.00

Program ended with exit code: 0


乘法,2015*10=20150

2015-11-15 17:24:35.764 switch-case[1692:89985] 请输入表达式!

2015*10

2015-11-15 17:24:45.414 switch-case[1692:89985] 20150.00

Program ended with exit code: 0


除法,2015/10=201.5

2015-11-15 17:24:58.379 switch-case[1696:90264] 请输入表达式!

2015/10

2015-11-15 17:25:10.669 switch-case[1696:90264] 201.50

Program ended with exit code: 0


学习这个例子,感觉瞬间回到了2008年上半学年,大一上学期~

转载于:https://www.cnblogs.com/qitian1/p/6462588.html

以下是一个简单的 Objective-C 计算器示例,实现了你所要求的功能: ViewController.h ```objective-c #import <UIKit/UIKit.h> @interface ViewController : UIViewController @end ``` ViewController.m ```objective-c #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UILabel *resultLabel; @property (nonatomic, strong) NSMutableString *inputString; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.inputString = [NSMutableString string]; } - (IBAction)numberButtonTapped:(UIButton *)sender { NSString *numberString = sender.titleLabel.text; [self.inputString appendString:numberString]; self.resultLabel.text = self.inputString; } - (IBAction)operatorButtonTapped:(UIButton *)sender { NSString *operatorString = sender.titleLabel.text; [self.inputString appendString:operatorString]; self.resultLabel.text = self.inputString; } - (IBAction)equalButtonTapped:(UIButton *)sender { NSExpression *expression = [NSExpression expressionWithFormat:self.inputString]; id value = [expression expressionValueWithObject:nil context:nil]; self.resultLabel.text = [NSString stringWithFormat:@"%@", value]; } - (IBAction)clearButtonTapped:(UIButton *)sender { [self.inputString setString:@""]; self.resultLabel.text = @"0"; } @end ``` 在这个示例中,我们使用了`IBOutlet`来创建了一个`UILabel`,用于显示计算结果。我们还创建了一个`NSMutableString`对象,用于存储用户输入的数学表达式。当用户按下数字按钮或操作符按钮时,我们将相应的字符串添加到`NSMutableString`对象中,并在`UILabel`中显示该字符串。当用户按下等号按钮时,我们使用`NSExpression`类来计算数学表达式,并将计算结果显示在`UILabel`中。当用户按下清除按钮时,我们将`NSMutableString`对象的内容清空,并将`UILabel`重置为默认值。 我们也可以通过创建多个`IBAction`方法来实现不同按钮的功能,例如在`numberButtonTapped`和`operatorButtonTapped`方法中分别处理数字和操作符按钮的操作。在`equalButtonTapped`方法中,我们使用`NSExpression`类来计算数学表达式。该类可以自动处理四则运算的优先规则。如果你需要实现其他高级功能,例如括号和函数,可以使用更高级的数学表达式解析库,例如`DTCoreText`和`DDMathParser`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值