From 6fff73b8b6c7f64c11f4275cedfd54bcffa2b6e5 Mon Sep 17 00:00:00 2001 From: Pin Lin Date: Wed, 6 May 2020 09:43:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=90=8D=E6=88=90=20tempFormula=20?= =?UTF-8?q?=E6=AF=94=E8=BC=83=E7=9F=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AndroidCalculator/Calculator.swift | 55 +++++++++++++++--------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/AndroidCalculator/Calculator.swift b/AndroidCalculator/Calculator.swift index d3783fe..5db5ed1 100644 --- a/AndroidCalculator/Calculator.swift +++ b/AndroidCalculator/Calculator.swift @@ -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! } }