2014-09-23 6 views
-1

Может кто-нибудь помочь мне понять, почему следующий код вызывает вышеупомянутую ошибку?Ошибка Scala: ';' ожидаемый, но '=' найдено

Код предназначенный для вращения 2D-массива на 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. Не могли бы вы рассказать нам, где именно происходит ошибка? Без этой информации нам будет очень сложно помочь вам. –

+4

Нотация доступа к массиву (и в общем виде) - '()' в scala, поэтому 'block [j] [i]' должно быть 'block (j) (i)' и т. Д. –

+0

Akso 'val a: Array [Array [Int]] = block [j] [i]'? 'a' является Int (по крайней мере,' block (j) (i) 'является Int). Ваш код кажется довольно смущенным. Вы можете удалить явный тип для 'a' и' b' в любом случае, компилятор будет работать. –

ответ

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 вас проблемы. Возможно, вам лучше понять, как работают массивы в scala.

Смежные вопросы