Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 韩元';即使语句为true,也不要进入if语句。科特林_Kotlin - Fatal编程技术网

Kotlin 韩元';即使语句为true,也不要进入if语句。科特林

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=“” }

我正在尝试制作一个简单的计算器,但是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=“”
}否则{
运算符=“总和”
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 = ""
    }
}