如何在 Kotlin 中使用 parseInt?

4

我正在为项目计数增加和减少的功能做着乐趣。我想让 count.text 加上"T"字符。但是当我尝试编写以下代码时出现了错误: 错误代码: java.lang.NumberFormatException: For input string: "1T" 如何解决这个问题?有人可以帮忙吗?

   fun increaseInteger() {

        var count = findViewById<TextView>(R.id.integer_number)
        count.text=intent.getStringExtra("case")+"T"
        var countResult = parseInt(intent.getStringExtra("case")+"T")
        var countValue = countResult+1
        if (countValue >= 1 && !decrease.isEnabled) { decrease.isEnabled = true}
        intent.putExtra("result",countValue)
        display(countValue)
    }

    fun decreaseInteger() {

        var count = findViewById<TextView>(R.id.integer_number)
        count.text=intent.getStringExtra("case")+"T"
        var countResult = parseInt(intent.getStringExtra("case")+"T")
        var countValue = countResult-1
        if (countValue <= 1) {decrease.isEnabled = false }
        intent.putExtra("result",countValue)
           display(countValue)
    }



好的,错误消息表明了问题所在:您将字符“T”添加到数字中,并尝试将其解析为整数。您应该首先将计数解析为整数,对其进行递增,然后再添加字符T。 - Aaron
谢谢您的评论,我已经尝试了很多次。但是我不知道如何解决它。 - user12180120
为什么你一开始要在 int 后面加上 T?试着去掉 T,你的代码应该就可以正常运行了 :) - Aaron
实际输入是什么,期望输出又是什么样子? - deHaar
这个回答解决了你的问题吗?如何在Kotlin中将String转换为Int? - Willi Mentzel
我需要添加‘T’..这是我的职责,因为项目需要。 - user12180120
2个回答

13

这个API非常简单明了:

"123".toInt() // returns 123 as Int
"123T".toInt() // throws NumberFormatException
"123".toIntOrNull() // returns 123 Int?
"123T".toIntOrNull() // returns null as Int?

如果您知道您的输入可能无法解析为Int,您可以使用toIntOrNull,如果该值无法解析,则返回null。它允许使用语言提供的更多的空安全工具,例如:

input.toIntOrNull() ?: throw IllegalArgumentException("$input is not a valid number")

(这个例子使用Elvis运算符来处理toIntOrNull返回空值的情况,否则需要在toInt周围使用try/catch语句)


2
您可以使用这些。
val str = "12345"
val str_new = "12345B"
str.toInt() // returns 123 as Int
str_new.toInt() // throws NumberFormatException
str.toIntOrNull() // returns 123 Int?
str_new.toIntOrNull() // returns null as Int?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接