用scala通过键盘创建不等长的2维数组,每一维长度从键盘输入,将输入数据按照降序排列,输出一维数组的所有元素
时间: 2024-09-19 10:04:06 浏览: 59
在Scala中,你可以使用`Array`类和`readLine`函数从用户那里获取输入,并结合`sortWith`方法对二维数组进行排序。这里是一个简单的示例:
```scala
import scala.io.StdIn.readLine
// 获取用户输入,生成二维数组的维度
val rows = readLine("请输入二维数组的第一维长度: ").toInt
val cols = readLine("请输入二维数组的第二维长度: ").toInt
// 创建一个空的二维数组
var arr: Array[Array[Int]] = Array.fill(rows)(Array.fill(cols)(0))
// 循环读取每个元素并存储到二维数组中,假设输入都是整数
for (i <- 0 until rows) {
for (j <- 0 until cols) {
arr(i)(j) = readLine(s"请输入第$i行第$j列的元素: ").toInt // 读入整数并转换
}
}
// 对二维数组进行降序排序,注意这里我们按第一维降序,因为默认的sortWith比较的是第一个元素
arr.sortWith(_._1 > _._1)
// 输出排序后的二维数组的一维数组形式,即按行遍历
arr.foreach(row => println(row.mkString(",")))
相关问题
用Scala语言通过键盘创建不等长的2维数组,每一维长度从键盘输入,将输入数据按照降序排列,输出二维数组的所有元素。
在Scala中,你可以使用`Array.ofDim`函数来动态创建不等长的2D数组,并通过`sortWith`方法对数组元素进行排序。以下是完成这个任务的一个示例:
```scala
import scala.io.StdIn.readLine
// 获取用户输入的矩阵维度
println("请输入二维数组的第一维长度:")
val rows = readLine.toInt
println("请输入二维数组的第二维长度:")
val cols = readLine.toInt
// 创建一个空的2D数组
val arr = Array.ofDim[Int](rows, cols)
// 用户输入数组元素
println(s"请输入每行的元素,按空格分隔:")
for (i <- 0 until rows) {
val input = readLine.split("\\s+").map(_.toInt)
// 将输入的元素转换为数组并添加到2D数组中
arr(i)(0 until input.length) = input
}
// 对二维数组进行降序排列
arr.sortWith(_ > _)
// 输出排序后的元素
println("排序后的二维数组:")
for (row <- arr) {
row.foreach(println)
}
Scala语言通过键盘创建不等长的2维数组,每一维长度从键盘输入,将输入数据按照降序排列,输出二维数组的所有元素。
在Scala中,你可以使用`Array.ofDim`函数结合`scala.io.StdIn.readLine`读取用户输入来创建不等长的二维数组,并使用`sortWith`方法对元素进行降序排序。以下是完成这个任务的一个简单示例:
```scala
import scala.io.StdIn
// 读取用户输入并创建二维数组
def createArray(): Array[Array[Int]] = {
val rows = readLine("请输入行数:").toInt
(0 until rows).map { _ =>
val cols = readLine(s"请输入第$(_ + 1)行的列数:").toInt
Array.fill(cols)(readLine(s"请输入第$(_ + 1), $cols个元素:").toInt).sorted(Ordering[Int].reverse)
}
}
// 输出二维数组的所有元素
def printArray(arr: Array[Array[Int]]) {
arr.foreach(row => println(row.mkString(", ")))
}
val myArray = createArray()
printArray(myArray)
阅读全文