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

Kotlin嵌套循环语法疑问:println()位置为何触发编译错误?

Kotlin嵌套循环中println()位置导致编译错误的原因

错误代码与问题

错误代码:

for (i in 0 until 8) {
    for (j in 0 until 8) {

    } println()
}

编译错误提示:

For is not an expression, and only expressions are allowed here.

核心原因

Kotlin的for循环是语句(statement),而非表达式(expression)——这是和Java的关键区别之一。

当你把println()和内层for循环写在同一行时,Kotlin编译器会尝试将其解析为:把println()作为内层for循环的后续表达式部分。但由于for循环本身不是表达式,无法参与这种语法结构,因此触发编译错误。

而将println()换行后,编译器能明确识别它是外层循环代码块中的独立语句,属于外层循环体的一部分,符合语法规则,因此可以正常编译运行。

与Java的差异

Java中允许在同一行放置多个语句(只要编译器能自动推断分隔),但Kotlin的语法解析逻辑更严格:对于代码块内的语句,若没有明确的分隔(换行或分号),编译器会尝试将同一行的后续代码与前面的结构绑定,而for循环作为语句不支持这种绑定方式,这就是为什么Java中没问题的写法在Kotlin里报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 06:01:45