即使statemente为true,也不会进入内部。 Kotlin

问题描述 投票:0回答:1

我正在尝试制作一个简单的计算器,但是equals按钮无法按预期执行,即使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设置错误,或者我做错了什么。

kotlin
1个回答
0
投票
val input = expression.text.toString().trim()

这里您在视图设置阶段捕获了该Edittext的内容。目前可能为空。

然后,在点击侦听器中,您拥有该值的条件代码:

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())。

© www.soinside.com 2019 - 2024. All rights reserved.