Android kotlin-我的if语句和运算符有问题

Android kotlin-我的if语句和运算符有问题,android,if-statement,kotlin,operators,Android,If Statement,Kotlin,Operators,这是我的目标:用户点击减号按钮,金额减少1,并且有一个if语句,不允许金额低于0 这是我的代码: var number = 0 view.text_amount.visibility = View.GONE view.plus_btn.setOnClickListener { if (number == 5) { Toast.makeText( require

这是我的目标:用户点击减号按钮,金额减少1,并且有一个if语句,不允许金额低于0

这是我的代码:

   var number = 0
        view.text_amount.visibility = View.GONE

        view.plus_btn.setOnClickListener {

            if (number == 5) {
                Toast.makeText(
                    requireContext(),
                    "Limit in order",
                    Toast.LENGTH_SHORT
                ).show()
            } else {
                view.text_amount.visibility = View.VISIBLE
                number++
                view.text_amount.text = number.toString()
            }
        }
        view.minus_btn.setOnClickListener {
            if (number <= 0) {
                view.text_amount.visibility = View.GONE
            } else {
                number--
                view.text_amount.text = number.toString()

            }

        }
var编号=0
view.text\u amount.visibility=view.GONE
view.plus_btn.setOnClickListener{
如果(数字=5){
Toast.makeText(
requireContext(),
“按顺序限制”,
吐司长度
).show()
}否则{
view.text\u amount.visibility=view.VISIBLE
数++
view.text\u amount.text=number.toString()
}
}
view.minus_btn.setOnClickListener{

如果(数字仅当
text\u amount
包含大于
0
的值时,才减小该值,然后再次检查其值,如果该值为
0
,则将其隐藏:

view.minus_btn.setOnClickListener {
    if (number > 0) {
        number--
        view.text_amount.text = number.toString()      
        if (number == 0) view.text_amount.visibility = View.GONE
    }
}

您的代码运行良好!如果您想使其更简单,可以将一些重复的逻辑浓缩为一个函数来处理这些情况:

fun adjustValue(amount: Int) {
    val adjusted = number + amount
    if (adjusted > 5) // show Toast
    number = adjusted.coerceIn(0, 5)
    view.text_amount.text = number.toString()
    view.text_amount.visibility = if (number == 0) View.GONE else View.VISIBLE
}

view.minus_btn.setOnClickListener { adjustValue(-1) }
view.plus_btn.setOnClickListener { adjustValue(1) }
基本上,我们的想法是计算出新的值(我使用的是一个临时变量,因此我们从不将
number
设置为无效值),并显示需要显示的任何警告。然后
强制输入
行确保我们将其锁定在允许值的有效范围内

您可以执行
if/else
检查,并仅在新值有效时设置新值,但有时只设置一些内容,然后担心边缘情况,这只是一个示例

对于
TextView
位,同样的事情是这样的-不管它是什么,只要设置值,然后设置是否显示它就更容易了。你可以使用
if/else
分支查看值,并决定是否设置文本…但是为什么要让你的生活变得艰难呢?我们知道该值在有效的0到5范围内,我们可以隐藏它如果它是0,则显示它,否则显示它…简单


您可以让函数使用
布尔值
,例如
plus:Boolean
,然后使用
val adjusted=number+if(plus)1 else-1
,但将其设置为
Int
意味着您可以轻松添加+10按钮或其他任何按钮,而无需添加更多代码或任何验证逻辑,而且传入
-1
而不是
false
(可以说更清晰!)

这可能比你要求的要多,但希望它有用。如果没有别的,那么“每次只设置文本和可见性”的方法是好的和整洁的