我是新来写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<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]} ")
}
}
答案 0 :(得分:1)
一切都是对的。你的内循环刚刚完成,外循环正在继续。
b0
是新创建的,并使用a[j]
初始化,现在为4,因为j
为1而a[1]
为4,导致b0
为4。登记/>
将断点放入var b0 = a[j]
行,您就会看到它。