You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala如何将存储图环的二维Array打印为指定格式?

解决代码

你可以直接用Scala函数式语法实现,不需要写复杂的循环判断:

// 你的环数据
val result: Array[Array[Long]] = Array(
  Array(0, 1, 4, 0),
  Array(1, 5, 2, 1),
  Array(1, 4, 0, 1),
  Array(2, 3, 5, 2),
  Array(2, 1, 5, 2),
  Array(3, 5, 2, 3),
  Array(4, 0, 1, 4),
  Array(5, 2, 3, 5),
  Array(5, 2, 1, 5)
)

// 处理并打印逻辑
result
  .groupBy(_.head) // 按环的起始节点分组
  .toSeq
  .sortBy(_._1) // 按起始节点升序排列,保证输出顺序符合要求
  .foreach { case (start, cycles) =>
    // 每个环去掉最后重复的首尾节点,拼接成箭头连接的字符串
    val cycleItems = cycles.map(_.dropRight(1).mkString("->"))
    // 按要求格式输出整行
    println(s"$start:${cycleItems.mkString(";")};")
  }

运行后输出和你要求的格式完全一致。


你之前遇到的问题说明

  1. for循环无法用if/else的误区:Scala的for循环内完全支持普通if/else分支判断,你看到的for后跟if是「守卫语法」用于过滤元素,和循环体内的if/else不冲突,只是命令式写法不如函数式写法简洁。
  2. groupBy后内容异常的问题:你看到的[J@xxxx是Java数组默认的toString返回值(数组对象的哈希标识),不是内容损坏,只要直接操作数组元素取值处理即可,比如用mkString就可以正常查看数组内容。

内容的提问来源于stack exchange,提问作者Michael Qiao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:36:04