一个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]
行,你会看到它。