历经好艰辛的过程做出来的计算器、功能齐全

本来今天晚上是没打算做出这个计算器的,因为我完全没有做这个的一个思维,但是没想到两个小时在琼哥、珊哥、敏哥的帮助下完成了这个巨作,新手总是容易满足的。

具体代码是不记得了,但是根据昨天晚上的记忆再回忆回忆。。

首先创建一个工程,然后在工程里面,还需再创建一个文件。命名虽然没要求,但是“专家”建议还是有必要创建一个有意义的名字,方便编程时分清什么是什么。

这里我创的文件 “ calculator ” 中文意思是 “ 计算器 ”。

那么第一步:   在 “ calculator.h ”新建文件中,声明类名:

 @interfacde Calculator : NSObject


@property float opValue1;  //opValue1     意思是 操作符1

@property float opValue2;   //opValue2     意思是 操作符

@property char op;        //  定义一个字符型“ op ”变量    字符型在代码中会被应用到*

- (float)work;               //声明一个方法


@end

第二步: 在“ calculator.m ”新建文件中,实现:

@implemention Calcuaotr

     - (float) work

{

   if ( calc.op == ' + ' )

    { return  calc.opValue1 + calc.opValue2;}

   if( calc.op == ' - ' )

    { return calo.opValue1 - calc.opValue2; }

   if( calc.op == ' * ' )

    { return calc.opvalue1 * calc.opValue2; }

   if( calc.op == ' / ' )

    { return calc.opValue1 / calc.opValue2; }

    }

    return  0;

@end 

 以上两步我们都已经完成了,但是还少了一样东西,因为我们在“ calcutor ” 的接口文件和实现文件中都已经做了一些方法的声明和定义,但是其中“ calcutor ” 还是一个类。

缺少一个对象,总不能拿“ calcutor ”  去直接应用吧?  所以我们要在“ Viewcontroller.h " 文件中,定义一个类变量:

      

@interface ViewController : UIViewController

{

    Caculator *calc;   //定义一个 Caculator 类型的变量  calc

}

@end

     在这里没有 “ calc ” 将其进行初始化。

 
第四步:
     下文才是 “ calcutor ” 小工具编程的重中之重, 在编程之前,珊哥跟我们讲解了 “ calcutor  ” 的单独加法的编码,虽然说是听懂了加法怎么做,但是我对四则运算还是一头雾水。
所以我晚饭后思考了很久,没有结果。7点中回教室,实在是做不出来了,我想还是把加法做出来再说,于是按照珊哥的模板一葫芦画瓢将加法运算全部完成。
     加法完成以后跟敏哥讨论,怎么判定加法、减法、乘法、除法来进行运算,听到别人说” if “语句的时候,我也想试试,便开始编码:
      

   if ( calc.op == ' + ')

    {

        calc.opValue2 =calc.opValue2 * 10;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];

    }

  else if (  calc. op ==  ' - ' )

    {

        calc.opValue2 =calc.opValue2 * 10;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];

    }

 else if (  calc. op ==  ' * ' )

    {

        calc.opValue2 =calc.opValue2 * 10;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];

    }

  else if (  calc. op ==  ' / ' )

    

    {

        calc.opValue2 =calc.opValue2 * 10;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];

    }

    else

    {

        calc.opValue1 =calc.opValue1 * 10;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];

    }

        以上代码是我自己去想的,一个一个去判定,如果都不满足的话,那就实现 “ else ” 后面的语句,按下的数字仍然在 " calc.opValue1 " 中,后来琼哥帮我看了一下,原来可以简化:

- (IBAction)didClicked0:(id)sender {

    if (calc.op =='+'

        ||calc.op =='-'

        ||calc.op =='*'

        ||calc.op =='/')

    {

        calc.opValue2 =calc.opValue2 * 10;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];

    }

    else

    {

        calc.opValue1 =calc.opValue1 * 10;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];

    }

 这样的话,会方便很多。

就这样带入“didclickx ” 从0到9的10个按键中,完成对于 ' + '、‘ - ’、‘ * ’、‘  、’ 的四则运算。


@implementation ViewController

- (IBAction)didClicked0:(id)sender {

    if (calc.op =='+'

        ||calc.op =='-'

        ||calc.op =='*'

        ||calc.op =='/')

    {

        calc.opValue2 =calc.opValue2 * 10;

        self.resultLabel.text = [ NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2 ];

    }

    else

    {

        calc.opValue1 =calc.opValue1 * 10;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];

    }

    

}


- (IBAction)didClicked1:(id)sender {

    if (calc.op =='+'

        ||calc.op =='-'

        ||calc.op =='*'

        ||calc.op =='/')

    {

        calc.opValue2 =calc.opValue2 * 10 +1;

        self.resultLabel.text = [ NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2 ];

    }

    else {

        calc.opValue1 =calc.opValue1 * 10 +1;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];

    }

}


- (IBAction)didClicked2:(id)sender {

    if (calc.op =='+'

        ||calc.op =='-'

        ||calc.op =='*'

        ||calc.op =='/')

    {

        calc.opValue2 =calc.opValue2 * 10 +2;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];

    }

    else {

        calc.opValue1 =calc.opValue1 * 10 +2;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];

    }

}

- (IBAction)didclick3:(id)sender {


    if (calc.op =='+'

        ||calc.op =='-'

        ||calc.op =='*'

        ||calc.op =='/')

    {

        calc.opValue2 =calc.opValue2 * 10 +3;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];

    }

    else {

        calc.opValue1 =calc.opValue1 * 10 +3;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];

    }

}

- (IBAction)didclick4:(id)sender {

    if (calc.op =='+'

        ||calc.op =='-'

        ||calc.op =='*'

        ||calc.op =='/')

    {

        calc.opValue2 =calc.opValue2 * 10 +4;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];

    }

    else {

        calc.opValue1 =calc.opValue1 * 10 +4;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];

    }

}

- (IBAction)didclick5:(id)sender {

    if (calc.op =='+'

        ||calc.op =='-'

        ||calc.op =='*'

        ||calc.op =='/')

    {

        calc.opValue2 =calc.opValue2 * 10 +5;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];

    }

    else {

        calc.opValue1 =calc.opValue1 * 10 +5;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];

    }

}

- (IBAction)didclick6:(id)sender {

    if (calc.op =='+'

        ||calc.op =='-'

        ||calc.op =='*'

        ||calc.op =='/')

    {

        calc.opValue2 =calc.opValue2 * 10 +6;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];

    }

    else {

        calc.opValue1 =calc.opValue1 * 10 +6;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];

    }

}

- (IBAction)didclick7:(id)sender {

    if (calc.op =='+'

        ||calc.op =='-'

        ||calc.op =='*'

        ||calc.op =='/')

    {

        calc.opValue2 =calc.opValue2 * 10 +7;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];

    }

    else {

        calc.opValue1 =calc.opValue1 * 10 +7;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];

    }

}

- (IBAction)didclick8:(id)sender {

    if (calc.op =='+'

        ||calc.op =='-'

        ||calc.op =='*'

        ||calc.op =='/')

    {

        calc.opValue2 =calc.opValue2 * 10 +8;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];

    }

    else {

        calc.opValue1 =calc.opValue1 * 10 +8;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];

    }

}

- (IBAction)didclick9:(id)sender {

    if (calc.op =='+'

        ||calc.op =='-'

        ||calc.op =='*'

        ||calc.op =='/')

    {

        calc.opValue2 =calc.opValue2 * 10 +9;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c%.1f",calc.opValue1,calc.op,calc.opValue2];

    }

    else {

        calc.opValue1 =calc.opValue1 * 10 +9;

        self.resultLabel.text = [NSStringstringWithFormat:@"%.1f",calc.opValue1];

    }

}

以上四则运算的判定已经完成。

接下来是四则运算的功能实现:

加法:

- (IBAction)didClickedAdd:(id)sender {

    calc.op = '+';

    self.resultLabel.text = [ NSStringstringWithFormat:@"%.1f%c",calc.opValue1,calc.op ];      

    // 输出两个值,分别是 calc.opValue1 和 calc.op  然后赋给 “ self.resultLabel.text ”  的 “ label ” 中,从而显示出 “ %f  ”和“ + ”两个值。

}

- (IBAction)didclickjian:(id)sender {

    calc.op = '-';

    self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c",calc.opValue1,calc.op];

    // 输出两个值,分别是 calc.opValue1 和 calc.op  然后赋给 “ self.resultLabel.text ”  的 “ label ” 中,从而显示出 “ %f  ”和“ + ”两个值。



}

- (IBAction)cheng:(id)sender {

    calc.op = '*';

    self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c",calc.opValue1,calc.op];

    // 输出两个值,分别是 calc.opValue1 和 calc.op  然后赋给 “ self.resultLabel.text ”  的 “ label ” 中,从而显示出 “ %f  ”和“ + ”两个值。


}

- (IBAction)chu:(id)sender {

    calc.op = '/';

    self.resultLabel.text = [NSStringstringWithFormat:@"%.1f%c",calc.opValue1,calc.op];

    // 输出两个值,分别是 calc.opValue1 和 calc.op  然后赋给 “ self.resultLabel.text ”  的 “ label ” 中,从而显示出 “ %f  ”和“ + ”两个值。



}

- (IBAction)clear:(id)sender {

   

    calc.op = 0;

    calc.opValue1 =0;

    calc.opValue2 =0;

    self.resultLabel.text=[NSStringstringWithFormat:@" "];

      // 按下 ‘  c  ’键 以后清除 " self.resultLabel.text " 里面的所有内容。

}


- (IBAction)didClickedEqual:(id)sender {

    //计算结果

    float result = [calc   work];       在这里引用 " work " 方法, 然后赋值到 “ float result  ”中,再放进 “  self.resultLabel.text  ”

    self.resultLabel.text = [NSStringstringWithFormat:@"%.1f", result];

    

    //计算完成,需要将计算器恢复到原始状态

    calc.op = 0;

    calc.opValue1 =0;

    calc.opValue2 =0;

}


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值