有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在Kotlin中将字符串转换为Int?

我正在Kotlin中开发一个控制台应用程序,在该应用程序中,我在main()函数中接受多个参数

fun main(args: Array<String>) {
    // validation & String to Integer conversion
}

我想检查String是否是一个有效的整数,并将其转换为相同的整数,否则我必须抛出一些异常

我如何解决这个问题


共 (6) 个答案

  1. # 1 楼答案

    val i = "42".toIntOrNull()
    

    请记住,正如名称所示,结果是可以为空的

  2. # 2 楼答案

    我使用这个util函数:

    fun safeInt(text: String, fallback: Int): Int {
        return text.toIntOrNull() ?: fallback
    }
    
  3. # 3 楼答案

    实际上,有几种方法:

    鉴于:

    var numberString : String = "numberString" 
    // number is the int value of numberString (if any)
    var defaultValue : Int    = defaultValue
    

    然后我们有:

    ^{tb1}$

    如果numberString是一个有效的整数,我们得到number,否则在Non-numeric value列中看到一个结果

  4. # 4 楼答案

    我会选择这样的

    import java.util.*
    
    fun String?.asOptionalInt() = Optional.ofNullable(this).map { it.toIntOrNull() }
    
    fun main(args: Array<String>) {
        val intArgs = args.map {
            it.asOptionalInt().orElseThrow {
                IllegalArgumentException("cannot parse to int $it")
            }
        }
    
        println(intArgs)
    }
    

    这是一种很好的方法,不引入不安全的可空值

  5. # 5 楼答案

    您可以在String实例上调用toInt()

    fun main(args: Array<String>) {
        for (str in args) {
            try {
                val parsedInt = str.toInt()
                println("The parsed int is $parsedInt")
            } catch (nfe: NumberFormatException) {
                // not a valid int
            }
        }
    }
    

    或者toIntOrNull()作为替代:

    for (str in args) {
        val parsedInt = str.toIntOrNull()
        if (parsedInt != null) {
            println("The parsed int is $parsedInt")
        } else {
            // not a valid int
        }
    }
    

    如果您不关心无效值,则可以将toIntOrNull()与安全调用运算符和作用域函数组合,例如:

    for (str in args) {
        str.toIntOrNull()?.let {
            println("The parsed int is $it")
        }
    }
    
  6. # 6 楼答案

    如上所述,使用toIntOrNull()

    Parses the string as an [Int] number and returns the result or null if the string is not a valid representation of a number.

    val a = "11".toIntOrNull()   // 11
    val b = "-11".toIntOrNull()  // -11
    val c = "11.7".toIntOrNull() // null
    val d = "11.0".toIntOrNull() // null
    val e = "abc".toIntOrNull()  // null
    val f = null?.toIntOrNull()  // null