Objective C - 3 - 实现一个计算器

代码

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

//

//  CalculatorViewController.m

//  Calculator

//

//  Created by sskset on 5/28/14.

//  Copyright (c) 2014 shanke. All rights reserved.

//

#import "CalculatorViewController.h"

@interface
CalculatorViewController ()

@property
(weak, nonatomic) IBOutlet
UITextField *resultText;

@property
(nonatomic) BOOL
isProcessing;

@property
(nonatomic) NSMutableArray
*numberStack;

@property
(nonatomic) NSMutableArray
*operandStack;

@end

@implementation
CalculatorViewController

-(NSMutableArray
*)operandStack

{

    if(!_operandStack)

        _operandStack = [[NSMutableArray
alloc] init];

    return
_operandStack;

}

-(NSMutableArray
*)numberStack

{

    if(!_numberStack)

        _numberStack = [[NSMutableArray
alloc] init];

    

    return
_numberStack;

}

- (IBAction)operandPressed:(UIButton *)sender {

    

    if([self
isAvailableToCalculate])

    {

        [self
doCalculate];

    }

    else

    {

        [self.numberStack addObject:self.resultText.text];

    }

    

    [self.operandStack addObject:sender.titleLabel.text];

    self.isProcessing = NO;

}

- (IBAction)numberPressed:(UIButton *)sender {

    

    if
(self.isProcessing) {

        self.resultText.text =

        [self.resultText.text stringByAppendingString:sender.titleLabel.text];

    }

    else{

        self.resultText.text = sender.titleLabel.text;

        self.isProcessing = YES;

    }

}

- (IBAction)resetPressed:(id)sender {

    

    self.isProcessing = NO;

    

    [self.numberStack removeAllObjects];

    [self.operandStack removeAllObjects];

    

    self.resultText.text = @"0";

}

-(void)doCalculate

{

    NSString
*operand = [self.operandStack lastObject];

    

    if(operand)

    {

        NSString
*outObject = [self.numberStack lastObject];

        int
outputInteger = outObject ? [outObject intValue] : 0;

        [self.numberStack removeLastObject];

        

        int
resultInteger = 0;

        

        if
([operand isEqualToString:@"+"])

        {

            resultInteger =  [self.resultText.text intValue] + outputInteger;

        }

        else
if ([operand isEqualToString:@"-"])

        {

            resultInteger = outputInteger - [self.resultText.text intValue];

        }

        else
if ([operand isEqualToString:@"*"])

        {

            resultInteger = outputInteger * [self.resultText.text intValue];

        }

        else

        {

            resultInteger = [self.resultText.text intValue] == 0 ? 0 : outputInteger / [self.resultText.text intValue];

        }

        

        [self.operandStack removeLastObject];

        

        NSString
*resultString = [NSString
stringWithFormat:@"%d", resultInteger];

        self.resultText.text = resultString;

        [self.numberStack addObject:resultString];

    }

}

-(BOOL)isAvailableToCalculate

{

    return
[self.operandStack lastObject] != nil;

}

- (IBAction)enterPressed:(id)sender

{

    [self
doCalculate];

}

@end

界面

Objective C - 3 - 实现一个计算器,布布扣,bubuko.com

时间: 2024-12-29 04:54:12

Objective C - 3 - 实现一个计算器的相关文章

Java写的一个计算器模拟小程序

下个周六又要参加自考实践上机考试了,时间过的好快,天冷了人也变懒惰了,有时候什么也不想干,今晚刚好有时间就抽空把JAVA的试题拿出来再复习复习,看书比较困乏索性就敲敲代码吧,说实话我对JAVA不是很熟,如果不是因为考试要考,我也没时间接触它,毕竟做运维的,我更喜欢shell,PYTHON之类的.算了,还是把刚敲的代码放这里保存下,省的以后又找不到了.刚入门也就这样了. 题目: 编写一个计算器模拟程序.界面采用4行3列布局,界面设有3个文字标签(运算数1.运算数2.计算结果).3个文本框和3个加.

用antlr4来实现《按编译原理的思路设计的一个计算器》中的计算器

上次在公司内部讲<词法分析--使用正则文法>是一次失败的尝试--上午有十几个人在场,下午就只来了四个听众. 本来我还在构思如何来讲"语法分析"的知识呢,但现在看来已不太可能. 这个课程没有预想中的受欢迎,其原因可能是: 1.课程内容相对复杂,听众知识背景与基础差异比较大. 2.授课技巧不够,不能把复杂的知识简单化的呈现给基础稍差一点的人. 针对这两个可能的原因,我要尝试做出以下调整: 1.使用antlr来实现词法和语法的部分. 2.暂时把"编译"过程改为

javascrip基础以及一个计算器的小案例

1.js的概述 js是一种脚本语言 js是可插入html页面的编程代码 js插入html页面后,可由所有的浏览器执 2.js的基本语法 与java一样,变量,函数名,运算符以及其他一切东西都是区分大小写的 js是弱类型的语言,与java不同 java:int i =3;String s = "123"; js:var i = 3;var s = "123"; 分号可有可无 变量名需要遵守两条简单的规则:1.第一个字符必须是字母,下划线(_)或美元符号($) 余下的字

一个计算器--支持去空格

// Logic.cpp : Defines the entry posize_t for the console application. // #include "stdafx.h" #include "string.h" #include "stdio.h" #include <stdlib.h> #include <math.h> float logic(char* pStr){ char* inData=pStr

利用面向对象写一个计算器

本文参考了程杰的<大话设计模式>,使用C#语言利用面向对象的模式来写一个计算器. 如果是我本人来写计算器,也就加减乘除的话,估计我会全部写进控制台里面,写4个if语句出来......或者我会利用switch,但是这样的效果都不好,有更好的方法,就是如下所示的代码啦: 先定义一个Operation类,主要实现运算框架: class Operation { public double Number1 { get; set;} public double Number2 { get; set; }

新写的一个计算器,里面还有部分bug,望大家指正

1 package org.xn.chapter11.practice; 2 /** 3 * 课后习题1:做一个计算器,这里我们以windows-XP中的calc计算器的标准型为目标来做 4 * 程序分解: 5 * 1.GUI界面: 6 * 菜单栏:编辑(复制,粘贴).查看.帮助 7 * 单行文本框: 8 * 回退键:Backspace.CE.C 9 * 数字键:1-9 .“0”.“.” .“+/-” 10 * 计算键:+ .- .* ./ :sqrt .% .1/x . = 11 * 12 *

如何写一个计算器

考虑这样一个问题,给定一个字符串,"1+1+(3+4)-2*3+8/2",如何将它转化为如下形式, "1+1=2" "3+4=7" "2+7=9" "2*3=6" "9-6=3" "8/2=4" "3+4=7" 换句话说,就是如何将字符串按照四则运算计算出来,如何写一个计算器.拿java来举例,并且为了简单,我们只考虑个位数.这个过程大概分为这几个

程序员修仙之路- CXO让我做一个计算器!!

菜菜呀,个税最近改革了,我得重新计算你的工资呀,我需要个计算器,你开发一个吧 CEO,CTO,CFO于一身的CXO X总,咱不会买一个吗? 菜菜 那不得花钱吗,一块钱也是钱呀··这个计算器支持加减乘除运算就行,很简单 CEO,CTO,CFO于一身的CXO (尼玛)那能不能给我涨点工资呀? 菜菜 公司现在很困难,你这个计算器关系到公司的存亡,你要注意呀!! CEO,CTO,CFO于一身的CXO (关于撇开话题佩服的五体投地)好吧X总,我尽快做 菜菜 给你一天时间,我这里着急要用 CEO,CTO,C

用VBA写一个计算器

着急的 玩家 可以 跳过“============”部分 ======================================可以跳过的 部分   开始====================================================== 之所以 要有今天这样一篇博客是因为. 之前领导让找几组数据.从excel表格里面. 要求是 主号码 一致,副号码 一致,名称为 XXX 的 项目发生变化的数据 需要被找到. 这样的 项目 有 11个. 我找的真的是眼要花. 变动前