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

为何Kotlin代码中Random.nextInt(0,4)首次迭代仅返回值3?

问题解答:随机红绿灯首次输出无效的原因

你碰到的不是“首次迭代只会返回3”,只是25%的概率会随机到3,刚好你多次尝试中碰到了这个情况而已,本质是代码的变量初始化逻辑有问题。

你的代码里trafficLightColor是在循环外部初始化的空字符串:

var trafficLightColor: String = "";

当第一次迭代随机到3的时候,前三个if/else if分支都不会触发,这个变量会保持初始的空值。后续判断时,空字符串转小写后既不匹配red、yellow也不匹配green,自然就进入else分支输出“Invalid traffic-light color”了。

要解决这个问题,有两种思路:

  • 把trafficLightColor的初始化移到循环内部,每次迭代都重置变量
  • 给随机到3的情况也设置一个默认值

用Kotlin更简洁的when表达式改写后的代码示例:

fun main() {
    List(50) {
        val randomNumber = kotlin.random.Random.nextInt(0, 4)
        val trafficLightColor = when(randomNumber) {
            0 -> "Red"
            1 -> "Yellow"
            2 -> "Green"
            else -> "Unknown"
        }
        when(trafficLightColor.lowercase()) {
            "red" -> println("Stop")
            "yellow" -> println("Slow")
            "green" -> println("Go")
            else -> println("Invalid traffic-light color")
        }
    }
}

这样每次迭代都会重新生成trafficLightColor,不会受上一次迭代的变量值影响,逻辑更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:51:09