Kotlin 我收到无法重新分配val的编译时错误。但我只将变量声明为'var'
Kotlin 我收到无法重新分配val的编译时错误。但我只将变量声明为'var',kotlin,Kotlin,val无法重新分配编译时错误var变量。我们不能更改数组值吗 错误 Array.kt:11:3:错误:无法重新分配val 代码: import java.util.Scanner 趣味主键(args:Array){ println(“输入编号”) val scanner=扫描仪(系统.`in`) var nos=数组(5){0} 变量i:Int=1 对于(1..3中的i){ nos[i]=scanner.nextInt() i=i+1 } println(“给定值$nos”) } 在这段代码中
val
无法重新分配编译时错误var
变量。我们不能更改数组值吗
错误
Array.kt:11:3:错误:无法重新分配val
代码:
import java.util.Scanner
趣味主键(args:Array){
println(“输入编号”)
val scanner=扫描仪(系统.`in`)
var nos=数组(5){0}
变量i:Int=1
对于(1..3中的i){
nos[i]=scanner.nextInt()
i=i+1
}
println(“给定值$nos”)
}
在这段代码中,您声明的不是一个变量,而是两个名为i
的变量,因为for
头创建了自己的声明。在循环中,只有for
标题中声明的版本可见,根据定义,该版本是val
话虽如此,我还不清楚你想要实现什么,因为一切看起来都会按照你想要的方式运行,而不需要在循环中尝试更新I
。for(I in 1..3)语句重新定义了I
的主体范围,在这里它变成了val
(实际上,它是一个单独的变量,隐藏在循环外部声明的i
)
您可以通过为这些变量使用不同的名称来修复代码,或者在您的情况下,只需删除var i:Int=1
和i=i+1
:
val scanner = Scanner(System.`in`)
var nos = Array<Int>(5) { 0 }
for (i in 1..3) {
nos[i] = scanner.nextInt()
}
println("Given values $nos")
val scanner=scanner(系统.`in`)
var nos=数组(5){0}
对于(1..3中的i){
nos[i]=scanner.nextInt()
}
println(“给定值$nos”)
UPD(回答评论):您可以通过使用函数
downTo
和step
构建一个级数,以相反的方向迭代或使用非单位步长。您不需要在for循环中手动递增i
或手动设置i
,您不需要声明var i:Int=1,因为它将在l中为您声明哦,你也不需要在循环中使用i=i+1。你可能的重复使构建中断了i=i+1
。谢谢你的解释。我不会再次遇到同样的错误吗?Bcoz,我们再次在for
中增加i
的值。所以我也必须删除该语句。如果是,我的第二个任务是ion如何在for
循环中减小I或执行I=I+2
。谢谢@hotkey。工作正常
var i : Int = 1
for (i in 1..3){
nos[i] = scanner.nextInt()
i = i+1
}
val scanner = Scanner(System.`in`)
var nos = Array<Int>(5) { 0 }
for (i in 1..3) {
nos[i] = scanner.nextInt()
}
println("Given values $nos")