2014-09-23 85 views
-1

有人可以帮我理解为什么下面的代码导致上述错误?斯卡拉错误:';'预计但'='发现

该代码用于将二维数组旋转90度。

def rotate90(block: Array[Array[Int]]) = { 
    var size: Int = block.size 
    var i: Int = 0 
    var j: Int = size - 1 
    while (j >= 0) { 
    while (i <= j) { 
     val a = block[j][i] 
     val b = block[j - i][j] 
     block[j][i] = b 
     block[j - i][j] = a 
     i = i + 1 
    } 
    j = j - 1 
    } 
    return block 
} 
+1

欢迎来到StackOverflow。你能告诉我们错误发生在哪里吗?没有这些信息,我们将很难帮助你。 – 2014-09-23 07:44:45

+4

数组访问符号(和一般集合)在scala中是'()',所以'block [j] [i]'应该是'block(j)(i)',依此类推。 – 2014-09-23 07:50:34

+0

Akso'val a:Array [Array [Int]] = block [j] [i]'? 'a'是一个Int(至少,'block(j)(i)'是一个Int)。你的代码似乎相当困惑。在任何情况下,您都可以删除'a'和'b'的显式类型,编译器会解决这个问题。 – 2014-09-23 09:34:31

回答

1
def rotate90(block: Array[Array[Int]]) = { 
    val copy: Array[Array[Int]] = Array.ofDim[Int](block.length, block(0).length) 

    for (w <- 0 until block(0).length; 
     h <- 0 until block.length) { 
      copy(h).update(w, block(block(0).length - 1 - w)(h)) 
    } 
    copy 
} 

以上是对你问题的斯卡拉解决方案。也许你更好理解scala中的数组是如何工作的。