我正在尝试制作一个简单的计算器,但是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设置错误,或者我做错了什么。
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()
)。