变量不能分配到2

时间:2015-12-03 14:51:59

标签: kotlin

我是新来写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。

enter image description here enter image description here enter image description here 这是所有代码:

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<String>) {
    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]} ")
    }
}

1 个答案:

答案 0 :(得分:1)

一切都是对的。你的内循环刚刚完成,外循环正在继续。
b0是新创建的,并使用a[j]初始化,现在为4,因为j为1而a[1]为4,导致b0为4。登记/> 将断点放入var b0 = a[j]行,您就会看到它。