From 27b7669ba10788c41e2188d98d413950132f7b89 Mon Sep 17 00:00:00 2001 From: Pin Lin Date: Wed, 6 May 2020 09:02:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A8=88=E7=AE=97=E4=B9=98=E9=99=A4=E7=9A=84?= =?UTF-8?q?=E7=B5=90=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AndroidCalculator/Calculator.swift | 46 +++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/AndroidCalculator/Calculator.swift b/AndroidCalculator/Calculator.swift index ea4d9c5..cca7635 100644 --- a/AndroidCalculator/Calculator.swift +++ b/AndroidCalculator/Calculator.swift @@ -20,7 +20,51 @@ class Calculator { return result } } - var result = "" + + var result: String { + get { + if formula.count < 3 { + return "" + } + + var calculatingFormula = formula + if ["+", "-", "×", "÷"].firstIndex(of: calculatingFormula.last!) != nil { + calculatingFormula.removeLast() + } + + while true { + let indexOfMultiplication = calculatingFormula.firstIndex(of: "×") + let indexOfDivision = calculatingFormula.firstIndex(of: "÷") + + if indexOfMultiplication == nil && indexOfDivision == nil { + break + } + if indexOfMultiplication != nil { + if indexOfDivision == nil || indexOfMultiplication! < indexOfDivision! { + let number1 = Double(calculatingFormula[indexOfMultiplication! - 1])! + let number2 = Double(calculatingFormula[indexOfMultiplication! + 1])! + calculatingFormula[indexOfMultiplication! - 1] = String(number1 * number2) + calculatingFormula.remove(at: indexOfMultiplication! + 1) + calculatingFormula.remove(at: indexOfMultiplication!) + continue + } + } + if indexOfDivision != nil { + if indexOfMultiplication == nil || indexOfDivision! < indexOfMultiplication! { + let number1 = Double(calculatingFormula[indexOfDivision! - 1])! + let number2 = Double(calculatingFormula[indexOfDivision! + 1])! + calculatingFormula[indexOfDivision! - 1] = String(number1 / number2) + calculatingFormula.remove(at: indexOfDivision! + 1) + calculatingFormula.remove(at: indexOfDivision!) + continue + } + } + } + + print(calculatingFormula) + return calculatingFormula[0] + } + } func click(_ text: String) { switch text {