2015-10-16 54 views
0
該數組的每個元素

我上Scala的練習,要求我在每個創建的4行和5列的2D陣列和存儲行索引+列索引+ 5個元件。此外,我必須按行,然後按列來總結數組,然後打印行總數和列總數。我很困惑,我只知道如何創建一個空數組。創建2D陣列和存儲值寫入Scala中

val matrix = Array.ofDim[Int](4, 5) 

你能教我怎麼做這個練習的其餘部分嗎?

回答

0

我不會告訴你「演習的休息」,但我會盡量表現出創建2D收集的一種方式,像這種情況的一個數組:

val matrix1D = for { 
    rowIndex <- (0 until 4).toArray 
    colIndex <- (0 until 5).toArray 
} yield rowIndex + colIndex + 5 

scala> :t matrix1D 
Array[Int] 

現在這個理解的結果就是2D數組的一維版本。

編輯

我或許可以給你一些更多的提示:

scala> (0 to 11).toArray.grouped(4).toArray 
res10: Array[Array[Int]] = Array(Array(0, 1, 2, 3), Array(4, 5, 6, 7), Array(8, 9, 10, 11)) 

scala> .transpose 
res11: Array[Array[Int]] = Array(Array(0, 4, 8), Array(1, 5, 9), Array(2, 6, 10), Array(3, 7, 11)) 

編輯

後您matrix2Dmatrix1D創建:

val matrix2D = matrix1D.?????????????????? 

scala> :t matrix2D 
Array[Array[Int]] 

要打印出來,你可以簡單地使用mkString

scala> matrix2D.map(_.mkString("\t")).mkString("\n") 
res32: String = 
5 6 7 8 9 
6 7 8 9 10 
7 8 9 10 11 
8 9 10 11 12 
+0

@Flippo,'(0〜11).toArray.grouped(4).toArray'顯示的是該輸出'RES0:數組[數組[INT]] =陣列([I @ 6e7baf36,[I @ 5c7942fc,[I @ 2caed06a,[I @ 6272a544)的'代替什麼烏爾表示 – Aamir

+0

@Aamir我使用'階-2.11。 4': 歡迎斯卡拉版本2.11.4(Java的熱點(TM)64位服務器VM,爪哇1.7.0_72)。 輸入表達式來評估它們。 類型:help獲取更多信息。 階>(0至11).toArray.grouped(4).toArray RES0:數組[數組[INT]] =陣列(陣列(0,1,2,3),陣列(4,5,6, 7),陣列(8,9,10,11)) –

+0

@Flippo,我使用階-2.11.7:歡迎的Scala版本2.11.7(爪哇熱點(TM)64位服務器VM,爪哇1.8.0_45 ),所以也許版本問題... – Aamir