【问题标题】:Create 2D array and store value into each element of that array in Scala在 Scala 中创建二维数组并将值存储到该数组的每个元素中
【发布时间】:2016-01-14 16:05:02
【问题描述】:

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

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

你能教我如何做剩下的练习吗?

【问题讨论】:

    标签: scala


    【解决方案1】:

    我不会告诉你“练习的其余部分”,但我会尝试展示一种创建 2D 集合的方法,例如本例中的数组:

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

    在哪里

    scala> :t matrix1D
    Array[Int]
    

    现在理解的结果是二维数组的一维版本。

    编辑

    我可能会给你更多提示:

    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))
    

    编辑

    matrix1D 创建matrix2D 之后:

    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
    

    【讨论】:

    • @Flippo, (0 to 11).toArray.grouped(4).toArray 正在显示此输出 res0: Array[Array[Int]] = Array([I@6e7baf36, [I@5c7942fc, [I@2caed06a, [I@6272a544) 而不是您显示的内容
    • @Aamir 我正在使用scala-2.11.4:欢迎使用 Scala 版本 2.11.4(Java HotSpot(TM) 64 位服务器 VM,Java 1.7.0_72)。键入表达式以对其进行评估。键入 :help 以获取更多信息。 scala> (0 to 11).toArray.grouped(4).toArray res0: Array[Array[Int]] = Array(Array(0, 1, 2, 3), Array(4, 5, 6, 7),数组(8、9、10、11))
    • @Flippo,我正在使用 scala-2.11.7:欢迎使用 Scala 版本 2.11.7(Java HotSpot(TM) 64 位服务器 VM,Java 1.8.0_45),所以可能是版本问题。 ..
    猜你喜欢
    • 2019-08-14
    • 1970-01-01
    • 2021-03-23
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多