一个variables不能赋值为2

我是新来写kotlin。 我遇到一个错误,我不知道如何解决它。

这是代码的一部分:

for (j in 0..m - 1) { var b0 = a[j] var tt = j var b1: Int for (i in 0..n / m - 1) { tt = (tt + k) % n b1 = a[tt] a[tt] = b0 if (b1 == 2) b0 = 2 else b0 = b1 } } 

当我调试它时,我发现了一些奇怪的东西。 为什么b0不能分配到2。

在这里输入图像说明 在这里输入图像说明 在这里输入图像说明 这是所有的代码:

 import java.util.* /** * Created by Yrh on 2015/12/3. */ fun ff(a: Int, b: Int): Int { var t = 1 var i = 2 var a1 = a var b1 = b while (i <= a1 && i <= b1) { t *= i a1 /= i b1 /= i i++ } return t } fun main(args: Array) { val scanner = Scanner(System.`in`) var a = IntArray(100) print("Input the number of data: ") val n = scanner.nextInt() print("Input the distant of moving: ") val k = scanner.nextInt() for (i in 0..n - 1) a[i] = scanner.nextInt() val m = ff(n, k) for (j in 0..m - 1) { var b0 = a[j] var tt = j var b1: Int for (i in 0..n / m - 1) { tt = (tt + k) % n b1 = a[tt] a[tt] = b0 b0 = b1 } } for (i in 0..n - 1) { print("${a[i]} ") } } 

一切都是对的。 你的内部循环刚完成,外部循环继续。
b0是新创建的,并且用a[j]初始化,现在是4,因为j是1, a[1]是4,导致b0是4。
把你的断点放入var b0 = a[j]行,你会看到它。