You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何将String转换为Int?含校验与异常处理需求

嘿,这个需求在Kotlin控制台应用里太常见了,我给你两种实用的实现方式,你可以根据自己的需求选:

方法1:用Kotlin标准库的toIntOrNull()(推荐)

Kotlin自带的toIntOrNull()函数简直是为这个场景量身定做的——它会尝试把字符串转成Int,成功就返回对应数值,失败则返回null。结合Elvis操作符(?:),我们可以轻松实现“无效则抛异常”的逻辑:

fun main(args: Array<String>) {
    // 先校验参数数量(可选,但很实用)
    if (args.isEmpty()) {
        throw IllegalArgumentException("请传入至少一个整数参数哦")
    }

    // 批量转换并校验每个参数
    val validIntegers = args.map { arg ->
        arg.toIntOrNull() ?: throw IllegalArgumentException("参数「$arg」不是有效的整数")
    }

    // 这里就可以用转换好的整数做你需要的操作了
    println("成功转换的整数列表: $validIntegers")
}

这个方法的优点是代码简洁、符合Kotlin的惯用写法,而且不需要手动处理异常捕获,可读性拉满。

方法2:自定义异常+try-catch(适合需要更精细错误控制的场景)

如果你想抛出自定义异常类型,或者需要在转换失败时添加更详细的错误信息,可以用try-catch包裹原生的toInt()方法(toInt()转换失败会抛出NumberFormatException):

// 自定义异常类,方便后续统一处理
class InvalidIntegerParameterException(message: String) : IllegalArgumentException(message)

fun main(args: Array<String>) {
    if (args.isEmpty()) {
        throw IllegalArgumentException("请提供至少一个整数参数")
    }

    val validIntegers = args.map { arg ->
        try {
            arg.toInt()
        } catch (e: NumberFormatException) {
            // 抛出自定义异常,带上具体的错误原因
            throw InvalidIntegerParameterException("参数「$arg」无法转换为整数:${e.message}")
        }
    }

    println("成功转换的整数列表: $validIntegers")
}

这种方式的好处是可以让你的异常体系更清晰,比如后续如果需要针对“无效整数参数”做特殊处理,直接捕获自定义异常即可。

另外补充一句:如果你的参数可能超出Int的范围(比如非常大的数),可以换成toLongOrNull()或者toBigIntegerOrNull(),用法和上面完全一致~

内容的提问来源于stack exchange,提问作者Sai Sarath C P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:38:56