Kotlin 韩元';即使语句为true,也不要进入if语句。科特林
我正在尝试制作一个简单的计算器,但是equals按钮没有按预期执行,即使if语句为true,它也不会执行任何操作。这是密码Kotlin 韩元';即使语句为true,也不要进入if语句。科特林,kotlin,Kotlin,我正在尝试制作一个简单的计算器,但是equals按钮没有按预期执行,即使if语句为true,它也不会执行任何操作。这是密码 var值1:Float=0f 变量值2:浮动=0f var运算符:String=“n” val input=expression.text.toString().trim() //这是加法按钮。减法、乘法和除法基本上都是精确的代码 plus.setOnClickListener{ if(input.isNullOrBlank()){ expression.text=“” }
var值1:Float=0f
变量值2:浮动=0f
var运算符:String=“n”
val input=expression.text.toString().trim()
//这是加法按钮。减法、乘法和除法基本上都是精确的代码
plus.setOnClickListener{
if(input.isNullOrBlank()){
expression.text=“”
}否则{
运算符=“总和”
value1=expression.text.toString().toFloat()
expression.text=“”
}
}
//相等按钮
equals.setOnClickListener{
val input2=expression.text.toString().trim()
如果(!input2.isNullOrBlank()){
value2=expression.text.toString().toFloat()
//这是文本视图,它总是显示为n
expression.text=运算符
//它从来不会出现在这些按钮中,我不知道我是否在操作按钮(add、sub、multi、div)中设置了错误
如果(运算符=“和”){
变量s=值1+值2
expression.text=s.toString()
运算符=“n”
}
如果(运算符=“子”){
var r=值1-值2
expression.text=r.toString()
运算符=“n”
}
如果(运算符==“div”){
变量d=值1/2
expression.text=d.toString()
运算符=“n”
}
如果(运算符==“多”){
变量m=值1*2
expression.text=m.toString()
运算符=“n”
}
}
}
为什么会这样?我不知道是我把操作符字符串设置错了,还是我做错了什么
我想让它这样,如果没有插补值,运算符或等于按钮就不会像电话计算器那样工作
在这里,您可以在视图设置阶段捕获该edittext的内容。此时可能是空的
然后,在click listener中,您有该值的条件代码:
并且input.isNullOrBlank()
条件始终为true,因此永远不会执行else分支
您可能应该阅读单击侦听器中的输入(
val input=expression.text.toString().trim()
)。这就是我想到的
//operator buttons
plus.setOnClickListener {
if (expression.text.toString().trim().isNullOrBlank()) {
expression.text = ""
} else {
value1 = expression.text.toString().toFloat()
operador = "suma"
expression.text = ""
}
}
equals按钮保持不变您同时拥有
操作符
和操作符
混合up@laalto最初的变量是operador,我试着把它们都改成英文,在代码中都是一样的,你说它总是显示为“n”。因此,可以假设运算符的值为“n”。在这种情况下,if语句都不是真的,所以没有执行任何语句是有意义的。每个操作符按钮一个?如果我这样做,只要我点击操作员按钮,应用程序就会崩溃
plus.setOnClickListener {
if (input.isNullOrBlank()) {
expression.text = ""
} else {
operator = "sum"
value1 = expression.text.toString().toFloat()
expression.text = ""
}
}
//operator buttons
plus.setOnClickListener {
if (expression.text.toString().trim().isNullOrBlank()) {
expression.text = ""
} else {
value1 = expression.text.toString().toFloat()
operador = "suma"
expression.text = ""
}
}