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

如何读取用户输入的整数作为Kotlin for循环的区间范围参数

问题解决:Kotlin读取输入整数作为for循环区间参数

原代码报错的核心原因是:
readLine() 方法返回的是可空字符串类型 String?,既没有做非空处理,也没有转换为整数类型,而 Kotlin 的整数区间 1..n 要求边界必须为整数类型,类型不匹配导致无法运行。


场景1:刷题/输入内容固定合法的场景

直接对输入做非空断言后转换为整数即可,代码如下:

fun main() {
    // 修复:读取输入后先做非空断言,再转换为Int类型
    val n = readLine()!!.toInt()
    for (i in 1..n) {
      val (a, b) = readLine()!!.split(' ')
      println(a.toInt() + b.toInt())
    }
}

场景2:生产环境/输入可能非法的场景

增加空值校验和格式校验,避免崩溃:

fun main() {
    // 校验输入的n是否为合法整数
    val n = readLine()?.toIntOrNull() ?: run {
        println("输入的循环次数不是合法整数")
        return
    }
    // 也可以用repeat代替1..n的for循环,写法更简洁
    repeat(n) {
        val inputLine = readLine() ?: return@repeat
        val numParts = inputLine.split(' ')
        if (numParts.size < 2) return@repeat
        val a = numParts[0].toIntOrNull() ?: return@repeat
        val b = numParts[1].toIntOrNull() ?: return@repeat
        println(a + b)
    }
}

Kotlin 作为强类型语言,不会隐式完成字符串到整数的类型转换,同时可空类型必须先处理空安全问题,才能参与后续运算,两步处理完成后就可以正常作为区间参数使用。

内容的提问来源于stack exchange,提问作者rumynoff

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:27:00