改名成 tempFormula 比較短

This commit is contained in:
2020-05-06 09:43:57 +08:00
parent 7c79f3af90
commit 6fff73b8b6

View File

@@ -27,55 +27,54 @@ class Calculator {
return ""
}
var calculatingFormula = formula
if ["+", "-", "×", "÷"].firstIndex(of: calculatingFormula.last!) != nil {
calculatingFormula.removeLast()
var tempFormula = formula
if ["+", "-", "×", "÷"].firstIndex(of: tempFormula.last!) != nil {
tempFormula.removeLast()
}
while true {
let indexOf乘號 = calculatingFormula.firstIndex(of: "×")
let indexOf除號 = calculatingFormula.firstIndex(of: "÷")
let indexOf乘號 = tempFormula.firstIndex(of: "×")
let indexOf除號 = tempFormula.firstIndex(of: "÷")
if indexOf乘號 == nil && indexOf除號 == nil {
break
}
if indexOf乘號 != nil && (indexOf除號 == nil || indexOf乘號! < indexOf除號!) {
let number1 = Double(calculatingFormula[indexOf乘號! - 1])!
let number2 = Double(calculatingFormula[indexOf乘號! + 1])!
calculatingFormula[indexOf乘號! - 1] = String(number1 * number2)
calculatingFormula.remove(at: indexOf乘號! + 1)
calculatingFormula.remove(at: indexOf乘號!)
let number1 = Double(tempFormula[indexOf乘號! - 1])!
let number2 = Double(tempFormula[indexOf乘號! + 1])!
tempFormula[indexOf乘號! - 1] = String(number1 * number2)
tempFormula.remove(at: indexOf乘號! + 1)
tempFormula.remove(at: indexOf乘號!)
}
if indexOf除號 != nil && (indexOf乘號 == nil || indexOf除號! < indexOf乘號!) {
let number1 = Double(calculatingFormula[indexOf除號! - 1])!
let number2 = Double(calculatingFormula[indexOf除號! + 1])!
calculatingFormula[indexOf除號! - 1] = String(number1 / number2)
calculatingFormula.remove(at: indexOf除號! + 1)
calculatingFormula.remove(at: indexOf除號!)
let number1 = Double(tempFormula[indexOf除號! - 1])!
let number2 = Double(tempFormula[indexOf除號! + 1])!
tempFormula[indexOf除號! - 1] = String(number1 / number2)
tempFormula.remove(at: indexOf除號! + 1)
tempFormula.remove(at: indexOf除號!)
}
}
while calculatingFormula.count > 1 {
let number1 = Double(calculatingFormula[0])!
let number2 = Double(calculatingFormula[2])!
if calculatingFormula[1] == "+" {
calculatingFormula[0] = String(number1 + number2)
while tempFormula.count > 1 {
let number1 = Double(tempFormula[0])!
let number2 = Double(tempFormula[2])!
if tempFormula[1] == "+" {
tempFormula[0] = String(number1 + number2)
} else {
calculatingFormula[0] = String(number1 - number2)
tempFormula[0] = String(number1 - number2)
}
calculatingFormula.remove(at: 2)
calculatingFormula.remove(at: 1)
tempFormula.remove(at: 2)
tempFormula.remove(at: 1)
}
if Double(calculatingFormula.last!)!.truncatingRemainder(dividingBy: 1) == 0 {
var number = calculatingFormula.popLast()!
if Double(tempFormula.last!)!.truncatingRemainder(dividingBy: 1) == 0 {
var number = tempFormula.popLast()!
number.removeLast()
number.removeLast()
calculatingFormula.append(number)
tempFormula.append(number)
}
print(calculatingFormula)
return calculatingFormula.last!
return tempFormula.last!
}
}