java.lang.NumberFormatException:对于输入字符串:kotlin 中的“16000$”

java.lang.NumberFormatException: For input string: "16000$" in kotlin

我想让显示器在点击增加按钮或减少按钮之前显示“16000$”。 当我编写类似此错误的代码时:java.lang.NumberFormatException:对于输入字符串:“16000$。但我应该显示 $。让我们检查我的代码并帮助我。


  var productprice = findViewById<TextView>(R.id.productPrice)
        productprice.text= intent.getStringExtra("price")+"$"
        var price = productPrice.text.toString().toInt()
        var inc_val= price
        var getPrice = price

        decrease.isEnabled=false

        increase.setOnClickListener {
            increaseInteger()
            getPrice+= inc_val
            productprice.text=getPrice.toString()+"$"
        }

        decrease.setOnClickListener {
            decreaseInteger()
            getPrice -= inc_val
            productprice.text=getPrice.toString()+"$"
        }

var price = productPrice.text.toString().toInt() - 您尝试在此处将“16000$”转换为 Int。请先在此处获取子字符串。

形式上,正确的代码是:

val priceText = productPrice.text.toString()
val price = priceText.substring(0, priceText.length - 1).toInt()

不过我真的建议你在内部储存价值。你的价格是模型的一部分。例如。您可以避免文本解析,而只是从模型中读取值。例如。代码将是这样的:

var price = intent.getIntExtra("price") // we store int value here, not String
var inc_val= price
decrease.isEnabled=false
displayPrice()

increase.setOnClickListener {
    intent.setIntExtra(intent.getIntExtra("price") + inc_val) // read, update, save
    displayPrice()
}
decrease.setOnClickListener {
    intent.setIntExtra(intent.getIntExtra("price") - inc_val) // read, update, save
    displayPrice()
}


/*this function just shows price*/
fun displayPrice() {
   val price = intent.getIntExtra("price")

   productprice.text= "$price$"
}

您正在尝试将带有“$”的字符串解析为 int,因此您收到 NumberFormatException。

试试这个:

var productprice = findViewById<TextView>(R.id.productPrice)
        productprice.text= intent.getStringExtra("price")+"$"
        var price = parseInt(intent.getStringExtra("price"))
        var inc_val= price
        var getPrice = price

        decrease.isEnabled=false

        increase.setOnClickListener {
            increaseInteger()
            getPrice+= inc_val
            productprice.text=getPrice.toString()+"$"
        }

        decrease.setOnClickListener {
            decreaseInteger()
            getPrice -= inc_val
            productprice.text=getPrice.toString()+"$"
        }