在Scala中创建2D数组并将值存储到该数组的每个元素中

时间:2015-10-16 02:02:05

标签: scala

我正在进行Scala练习,要求我创建一个包含4行和5列的2D数组,并在每个元素中存储行索引+列索引+5。此外,我必须按行然后按列对数组求和并打印行总数和列总数。我很困惑,我只知道如何创建一个空数组。

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

你能教我怎么做这个练习的其余部分吗?

1 个答案:

答案 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