iOS 计算器 基本功能实现

//mathModel.h文件

#import <Foundation/Foundation.h>

@interface mathModel : NSObject
+(NSString*)addN1:(double)number1 andN2:(double) number;
+(NSString *)subN1:(double)number1 andN2:(double)number;
+(NSString *)nulN1:(double)number1 andN2:(double)number;
+(NSString *)divN1:(double)number1 andN2:(double)number;
+(NSString *)sqrtN1:(double)number1;
+(NSString *)powN1:(double)number1 ;

@end




//mathModel.m文件中

#import "mathModel.h"


@implementation mathModel

+(NSString *)addN1:(double)number1 andN2:(double)number

{

   return [NSStringstringWithFormat:@"%lg",number+number1];

    

}

+(NSString *)subN1:(double)number1 andN2:(double)number

{

   return [NSStringstringWithFormat:@"%lg",number1-number];


}

+(NSString *)nulN1:(double)number1 andN2:(double)number

{

   return [NSStringstringWithFormat:@"%lg",number*number1];

    

}

+(NSString *)divN1:(double)number1 andN2:(double)number

{

   return [NSStringstringWithFormat:@"%lg",number/number1];

    

}

+(NSString *)sqrtN1:(double)number1

{

   return [NSStringstringWithFormat:@"%lf",sqrt(number1)];

    

}

+(NSString *)powN1:(double)number1

{

   return [NSStringstringWithFormat:@"%lf",pow(number1, 2)];

    

}


@end



//ViewController.h文件中

#import <UIKit/UIKit.h>


@interface ViewController :UIViewController

@property (retain,nonatomic) IBOutletUILabel *outlable;


@property(assign,nonatomic)double opNumberA,opNumberB;

@property(assign,nonatomic)BOOL haspoint;


@property(assign,nonatomic)BOOL isUserInputNumber;

@property(retain,nonatomic)NSString *str1;

- (IBAction)numberTouch:(id)sender;

- (IBAction)clear:(id)sender;

- (IBAction)addpoint:(id)sender;



- (IBAction)method1:(id)sender;

// 

- (IBAction)Equalbt:(id)sender;

- (IBAction)method2:(id)sender;

//   平方  开方  小数点

@end



//

//ViewController.m文件中

//  ViewController.m

//  math

//

//

//  Copyright (c) 2013 wzf. All rights reserved.

//


#import "ViewController.h"

#import "mathModel.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad

{

    [superviewDidLoad];

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


    


}


- (void)didReceiveMemoryWarning

{

    [superdidReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


- (void)dealloc {

    

    [_outlable release];

    [_str1release];

   

    [superdealloc];

}


- (IBAction)numberTouch:(id)sender {

   UIButton *button=(UIButton*)sender;

    

    if (self.isUserInputNumber)

    {

       if (self.haspoint) {

            NSMutableString *mst1= [NSMutableStringstringWithFormat:@"%@",self.outlable.text];

            [mst1appendFormat:@"%@",button.currentTitle];

           self.outlable.text=mst1;

            

        }

       else

        {

           double inputNumber=[self.outlable.textdoubleValue];

        //获得文本框内容转成长整形

       inputNumber =inputNumber*10+button.currentTitle.doubleValue;

       //获得文本标题

       self.outlable.text=[NSStringstringWithFormat:@"%lg",inputNumber];

        }

    }

   else{

       self.outlable.text=button.currentTitle;

        self.isUserInputNumber=YES;

    }

}

- (IBAction)clear:(id)sender {

    self.haspoint=false;

   self.outlable.text=@"0";

    self.isUserInputNumber=NO;

    

}


- (IBAction)addpoint:(id)sender

{

//    UIButton *button1=(UIButton*)sender;

   if (!self.haspoint) {

        NSMutableString *mustr2=[NSMutableStringstringWithFormat:@"%@%@",self.outlable.text,@"."];

       self.outlable.text=mustr2;

       self.haspoint=true;

    }

}


// + -

- (IBAction)method1:(id)sender {

   UIButton *button1=(UIButton*)sender;

    //将前面一个输入的数字保存在opNumberA

    self.opNumberA=[self.outlable.textfloatValue];

    //将点击事件强转成butntitle存入字符串中

   self.str1=button1.currentTitle;

    //这时在点击加或者减运算时isUserInputNumberno 输入的 数值就不会连在一起。

    self.isUserInputNumber=NO;

    self.haspoint=false;

    

    

}


- (IBAction)Equalbt:(id)sender {

    


    self.opNumberB=[self.outlable.textdoubleValue];

    if ([self.str1isEqualToString:@"+"])

    {

        self.outlable .text=[mathModeladdN1:self.opNumberAandN2:self.opNumberB ];

        self.opNumberA=[self.outlable.textdoubleValue];

        

        self.isUserInputNumber=NO;

           

        

    }

    if ([self.str1isEqualToString:@"-"]) {

        self.outlable .text=[mathModelsubN1:self.opNumberAandN2:self.opNumberB ];

        self.opNumberA=[self.outlable.textdoubleValue];

        

        self.isUserInputNumber=NO;

    }

    if ([self.str1isEqualToString:@"*"]) {

        self.outlable .text=[mathModelnulN1:self.opNumberAandN2:self.opNumberB ];

        self.opNumberA=[self.outlable.textdoubleValue];

        

        self.isUserInputNumber=NO;

        

    }

    if ([self.str1isEqualToString:@"/"]) {

        self.outlable .text=[mathModeldivN1:self.opNumberAandN2:self.opNumberB];

        self.opNumberA=[self.outlable.textdoubleValue];

        

        self.isUserInputNumber=NO;

        

    }

    if ([self.str1isEqualToString:@"√x"]) {

        self.outlable .text=[mathModelsqrtN1:self.opNumberA  ];

        self.opNumberA=[self.outlable.textdoubleValue];

        

        self.isUserInputNumber=NO;

        

    }

    if ([self.str1isEqualToString:@"x^2"])

    {

        self.outlable .text=[mathModelpowN1:self.opNumberA ];

        self.opNumberA=[self.outlable.textdoubleValue];

        

        self.isUserInputNumber=NO;

        

    }


self.haspoint=false;


}


- (IBAction)method2:(id)sender {

    self.haspoint=false;

   UIButton *button2=(UIButton*)sender;

    self.opNumberA=[self.outlable.textdoubleValue];

   self.str1=button2.currentTitle;

    self.isUserInputNumber=NO;

   }

@end





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 很抱歉,作为一个自然语言处理模型,我无法写出完整的代码,但是下面是一个简单的计算器的 Objective-C 代码示例: ``` #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; double value1, value2; char operator; NSLog (@"请输入第一个数字和算术运算符:"); scanf ("%lf %c", &value1, &operator); NSLog (@"请输入第二个数字:"); scanf ("%lf", &value2); if ( operator == '+' ) NSLog (@"%.2f + %.2f = %.2f", value1, value2, value1 + value2); else if ( operator == '-' ) NSLog (@"%.2f - %.2f = %.2f", value1, value2, value1 - value2); else if ( operator == '*' ) NSLog (@"%.2f * %.2f = %.2f", value1, value2, value1 * value2); else if ( operator == '/' ) NSLog (@"%.2f / %.2f = %.2f", value1, value2, value1 / value2); else NSLog (@"无效的运算符"); [pool drain]; return 0; } ``` 这是一个简单的计算器代码示例,它可以实现加减乘除运算,你可以根据需要扩展其他功能。 ### 回答2: iOS上运行的计算器代码可以使用Swift语言编写。以下是一个简单的计算器代码示例: ```swift import UIKit class ViewController: UIViewController { @IBOutlet weak var displayLabel: UILabel! var operand1: Double = 0 var operand2: Double = 0 var operation: String = "" override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } @IBAction func numberButtonPressed(_ sender: UIButton) { let digit = sender.currentTitle! displayLabel.text! += digit } @IBAction func operationButtonPressed(_ sender: UIButton) { operation = sender.currentTitle! operand1 = Double(displayLabel.text!)! displayLabel.text = "" } @IBAction func equalsButtonPressed(_ sender: UIButton) { operand2 = Double(displayLabel.text!)! var result: Double = 0 switch operation { case "+": result = operand1 + operand2 case "-": result = operand1 - operand2 case "×": result = operand1 * operand2 case "÷": result = operand1 / operand2 default: break } displayLabel.text = String(result) } @IBAction func clearButtonPressed(_ sender: UIButton) { displayLabel.text = "" operand1 = 0 operand2 = 0 operation = "" } } ``` 这个代码示例包括一个ViewController类,它继承自UIViewController。它具有数字按钮、运算符按钮、等于按钮和清除按钮的响应函数。 CalculatorViewController类中的一些重要成员变量包括`operand1`和`operand2`,用于存储操作数的值,`operation`用于存储当前选择的运算符。 在数字按钮和操作按钮的响应函数中,将所点击的按钮的标题添加到显示标签上。 在等于按钮的响应函数中,将当前显示标签上的文本转换为数字,并根据存储的运算符执行相应的计算。然后,将结果显示在显示标签上。 清除按钮的响应函数将显示标签上的内容、操作数和运算符重置为初始状态。 这是一个简单的iOS计算器代码示例,可以根据需要进行扩展和改进。 ### 回答3: 以下是一个简单的iOS计算器代码示例: ```swift import UIKit class ViewController: UIViewController { // 创建计算器显示区域的标签 let displayLabel: UILabel = { let label = UILabel() label.font = UIFont.systemFont(ofSize: 40) label.text = "0" label.textAlignment = .right return label }() var currentNumber = "" var previousNumber = "" var operation = "" override func viewDidLoad() { super.viewDidLoad() // 设置背景颜色 view.backgroundColor = .white // 设置计算器显示区域的布局和约束 displayLabel.frame = CGRect(x: 20, y: 100, width: view.frame.size.width - 40, height: 100) view.addSubview(displayLabel) // 设置数字按钮 for i in 0..<10 { let button = UIButton(type: .system) button.setTitle("\(i)", for: .normal) button.titleLabel?.font = UIFont.systemFont(ofSize: 30) button.frame = CGRect(x: CGFloat((i % 3)) * (view.frame.size.width/3), y: CGFloat(i / 3) * (view.frame.size.width/3) + 220, width: view.frame.size.width/3, height: view.frame.size.width/3) button.addTarget(self, action: #selector(numberButtonTapped), for: .touchUpInside) view.addSubview(button) } // 设置运算符按钮 let operators = ["+", "-", "*", "/"] for (index, operator) in operators.enumerated() { let button = UIButton(type: .system) button.setTitle(operator, for: .normal) button.titleLabel?.font = UIFont.systemFont(ofSize: 30) button.frame = CGRect(x: view.frame.size.width - 80, y: CGFloat(index) * (view.frame.size.width/3) + 220, width: 60, height: view.frame.size.width/3) button.addTarget(self, action: #selector(operatorButtonTapped), for: .touchUpInside) view.addSubview(button) } // 设置等号按钮 let equalsButton = UIButton(type: .system) equalsButton.setTitle("=", for: .normal) equalsButton.titleLabel?.font = UIFont.systemFont(ofSize: 30) equalsButton.frame = CGRect(x: view.frame.size.width - 80, y: CGFloat(operators.count) * (view.frame.size.width/3) + 220, width: 60, height: view.frame.size.width/3) equalsButton.addTarget(self, action: #selector(equalsButtonTapped), for: .touchUpInside) view.addSubview(equalsButton) } // 当数字按钮被点击时调用 @objc func numberButtonTapped(_ sender: UIButton) { if let numberText = sender.titleLabel?.text { currentNumber += numberText displayLabel.text = currentNumber } } // 当运算符按钮被点击时调用 @objc func operatorButtonTapped(_ sender: UIButton) { if let operatorText = sender.titleLabel?.text { previousNumber = currentNumber currentNumber = "" operation = operatorText } } // 当等号按钮被点击时调用 @objc func equalsButtonTapped(_ sender: UIButton) { let number1 = Double(previousNumber) ?? 0.0 let number2 = Double(currentNumber) ?? 0.0 var result: Double switch operation { case "+": result = number1 + number2 case "-": result = number1 - number2 case "*": result = number1 * number2 case "/": result = number1 / number2 default: result = 0.0 } displayLabel.text = String(result) currentNumber = "" previousNumber = "" operation = "" } } ``` 这个计算器可以处理基本的加、减、乘、除运算,并在屏幕上显示结果。界面使用了按钮和标签来显示数字和运算符,并实现了按钮点击事件的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值