-
Notifications
You must be signed in to change notification settings - Fork 0
/
Calculator
138 lines (93 loc) · 2.83 KB
/
Calculator
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
//
// ViewController.swift
// Calculator
//
// Created by Yun Zhang on 1/13/19.
// Copyright © 2019 Yun Zhang. All rights reserved.
//
import UIKit
enum modes{
case not_set
case addition
case subtraction
case multiplication
}
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
var labelString:String = "0"
var currentMode:modes = .not_set
var savedNum:Int = 0
var lastButtonWasMode:Bool = false
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func didPressPlus(_ sender: Any) {
changeModes(newMode: .addition)
}
@IBAction func didPressSubtract(_ sender: Any) {
changeModes(newMode: .subtraction)
}
@IBAction func didPressMultiply(_ sender: Any) {
changeModes(newMode: .multiplication)
}
@IBAction func didPressEquals(_ sender: Any) {
guard let labelInt:Int = Int(labelString) else {
return
}
if(currentMode == .not_set || lastButtonWasMode){
return
}
if(currentMode == .addition) {
savedNum += labelInt
}
else if (currentMode == .subtraction) {
savedNum -= labelInt
}
else if (currentMode == .multiplication) {
savedNum *= labelInt
}
currentMode = .not_set
labelString = "\(savedNum)"
updateText()
lastButtonWasMode = true
}
@IBAction func didPressClear(_ sender: Any) {
labelString = "0"
currentMode = .not_set
savedNum = 0
lastButtonWasMode = false
label.text = "0"
}
@IBAction func didPressNumber(_ sender: UIButton) {
let stringValue:String? = sender.titleLabel?.text
if(lastButtonWasMode){
lastButtonWasMode = false
labelString = "0"
}
labelString = labelString.appending(stringValue!)
updateText()
}
func updateText(){
guard let labelInt:Int = Int(labelString) else {
return
}
if(currentMode == .not_set){
savedNum = labelInt
}
let formatter:NumberFormatter = NumberFormatter()
formatter.numberStyle = .decimal
let num:NSNumber = NSNumber(value: labelInt)
label.text = "\(labelInt)"
}
func changeModes(newMode:modes){
if (savedNum == 0) {
return
}
currentMode = newMode
lastButtonWasMode = true
}
}