我正在进行Scala练习,要求我创建一个包含4行和5列的2D数组,并在每个元素中存储行索引+列索引+5。此外,我必须按行然后按列对数组求和并打印行总数和列总数。我很困惑,我只知道如何创建一个空数组。
val matrix = Array.ofDim[Int](4, 5)
你能教我怎么做这个练习的其余部分吗?
答案 0 :(得分:0)
我不会告诉你"其余的练习"但我会尝试展示一种创建2D集合的方法,就像这种情况下的数组一样:
val matrix1D = for {
rowIndex <- (0 until 4).toArray
colIndex <- (0 until 5).toArray
} yield rowIndex + colIndex + 5
其中
scala> :t matrix1D
Array[Int]
现在这个for-comprehension的结果是2D数组的1D版本。
修改强>
我可能会给你更多提示:
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))
修改强>
从matrix2D
创建matrix1D
后:
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