Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 我收到无法重新分配val的编译时错误。但我只将变量声明为'var'_Kotlin - Fatal编程技术网

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")