計算機の処理でどのようなコードを書けば実装できるのか数日調べながら考えたのですが思いつかず投稿させていただきます。
悩んでいるのは演算子が押された時の処理です。
どの様な順番で計算の実行やvalue1,2の書き変えをしたらいいのかが分からずとても悩んでいます。
仕様としては一般的な電卓のように「数字を入力」「演算子をタップ」「数字を入力」「演算子をタップ(=以外でも)」で計算結果が表示されるようにしたいです。Activityから都度value1を表示するようにしています。
よろしくお願いします。
import android.widget.Button import java.math.BigDecimal class Calculator() { var value1 = "0" var value2 = "0" var value3 = "0" var operator = "" //オールクリアキーがクリックされた時 fun tapAllClear() { value1 = "0" value2 = "0" operator = "" } //クリアキーがクリックされた時 fun tapClear() { value1 = "0" } //バックキーがクリックされた時 fun tapBack() { if (value1.length == 1) { value1 = "0" } else { value1 = value1.substring(0, value1.length - 1) } } //演算子がクリックされた時 fun tapOperator(ope: String) { if (operator != "") { calculate() } value2 = value1 //value1 = "0" if (ope != "="){ operator = ope } } //数字がクリックされた時 fun tapNumber(number: String) { if (value1 == "0") { if (number != "0" && number != "00") { if (number == ".") { value1 = "0." } else { value1 = number } } } else { if (number != ".") { value1 += number } else if (!value1.contains(".")) { value1 += number } } } //計算実行 fun calculate() { val val1 = BigDecimal(value1) val val2 = BigDecimal(value2) when (operator) { "+" -> value1 = val2.add(val1).toString() "-" -> value1 = val2.minus(val1).toString() "×" -> value1 = val2.multiply(val1).toString() "÷" -> value1 = val2.divide(val1).toString() } value2 = "0" } }