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

Scala代码输出冗余信息问题:如何仅获取符合条件的最后一行结果?

如何只保留Scala代码输出的最后一行结果?

嘿,我来帮你搞定这个问题!你的代码现在会输出所有匹配Malaysia的行,但你只需要最后一行对吧?其实很简单,只需要先收集所有符合条件的条目,再取最后一个来打印就好啦,这样就能避免重复输出。

修改后的代码

import scala.io.Source
object CovidWorld {
  def main(args: Array[String]): Unit = {
    val filename = Source.fromFile("OOPAssignment3.txt")
    try{
      // 先收集所有符合条件的马来西亚死亡数据字符串
      val matchingDeaths = for {
        line <- filename.getLines.toList
        if line.contains("Malaysia")
        splitLine = line.split(",")
        // 增加数组长度检查,避免字段不足时抛出越界异常
        if splitLine.length >= 8 && splitLine(7).nonEmpty
      } yield splitLine(7)

      // 安全获取最后一条匹配数据并打印,无匹配项时不会执行打印
      matchingDeaths.lastOption.foreach { lastDeath =>
        println("\n Malaysia latest total amount of death: " + lastDeath)
      }
    } finally{
      filename.close
    }
  }
}

关键修改说明

  • 收集而非即时打印:用for推导式把所有符合条件的死亡数据先收集到列表中,而不是遍历一行就打印一行
  • 增加健壮性检查:新增splitLine.length >= 8的判断,防止文件中某些行的字段数量不足8个时抛出ArrayIndexOutOfBoundsException
  • 安全获取最后一项:使用lastOption替代直接调用last,这样当没有任何匹配行时,不会抛出NoSuchElementException,而是静默跳过打印操作
  • 按需打印:通过foreach只有在存在最后一条数据时才执行打印逻辑,确保只输出你需要的最后一行结果

内容的提问来源于stack exchange,提问作者Arthur Leong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 00:02:47