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
相关产品推荐
相关产品推荐

