Не будет go внутри, если statemente, даже если statemente верно. Kotlin - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь сделать простой калькулятор, но кнопка равенства не работает должным образом, она не выполняет никаких операций, даже если оператор if равен true. Это код

var value1: Float = 0f
var value2: Float = 0f
var operator: String = "n"

val input = expression.text.toString().trim()

//this is the adding button the subtracting, multiplying, and dividing are basically the exact code 
plus.setOnClickListener {
    if (input.isNullOrBlank()) {
        expression.text = ""
    } else {
        operator = "sum"
        value1 = expression.text.toString().toFloat()
        expression.text = ""
    }
}

//equals button
equals.setOnClickListener {
    val input2 = expression.text.toString().trim()

    if (!input2.isNullOrBlank()) {
        value2 = expression.text.toString().toFloat()

        // this is the textView and it always shows up as n
        expression.text = operator 

        //it never goes in any of these, I don't know if I'm setting it up wrong in the action buttons (add, sub, multi, div)
        if (operator == "sum") {
            var s = value1 + value2
            expression.text = s.toString()
            operator = "n"
        }    
        if (operator == "sub") {
            var r = value1 - value2
            expression.text = r.toString()
            operator = "n"
        }
        if (operator == "div") {
            var d = value1 / value2
            expression.text = d.toString()
            operator = "n"
        }
        if (operator == "multi") {
            var m = value1 * value2
            expression.text = m.toString()
            operator = "n"
        }
    }
}

Почему это происходит? Я не знаю, неправильно ли я настраиваю оператор String или я что-то не так делаю.

Я хотел получить его, чтобы, если значения не вменялись, чем оператор или кнопка равно не будет работать как на калькуляторе телефона

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

Это то, что я придумал

//operator buttons
plus.setOnClickListener {
    if (expression.text.toString().trim().isNullOrBlank()) {
        expression.text = ""
    } else {
        value1 = expression.text.toString().toFloat()
        operador = "suma"
        expression.text = ""
    }
}

кнопка равенства остается прежней

0 голосов
/ 19 марта 2020
val input = expression.text.toString().trim()

Здесь вы фиксируете содержимое этого текста редактирования на этапе настройки просмотра. В данный момент он, скорее всего, пуст.

Затем в прослушивателе щелчков у вас есть условный код для этого значения:

plus.setOnClickListener {
    if (input.isNullOrBlank()) {
        expression.text = ""
    } else {
        operator = "sum"
        value1 = expression.text.toString().toFloat()
        expression.text = ""
    }
}

, а условие input.isNullOrBlank() всегда Значение true, так что ветвь else никогда не выполняется.

Скорее всего, вам следует прочитать ввод (val input = expression.text.toString().trim()) внутри прослушивателя щелчков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...