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

Scala入门问题:如何将读取文本生成的Array中的null替换为0

Scala空字段替换解决方案

修正后代码

import scala.io.Source

// 前置变量定义示例(根据你的实际需求调整初始值)
val iso_code: String = "AFG" // 替换为你要匹配的ISO编码
var total_deaths: Double = 0.0
var sum_of_new_deaths: Double = 0.0
var record_count: Int = 0

val filename = "relevant.txt"
val rf = Source.fromFile(filename).getLines.toArray

for (line <- rf) {
  // 拆分并处理字段:保留末尾空值、去除前后空格、空字段替换为"0"
  val fields = line.split(",", -1)
    .map(_.trim)
    .map(elem => if (elem.isEmpty) "0" else elem)

  if (fields(0).equalsIgnoreCase(iso_code)) {
    total_deaths += fields(4).toDouble
    sum_of_new_deaths += fields(5).toDouble
    record_count += 1
  }
}

关键说明

  • split(",", -1) 第二个参数必须设为-1,否则Scala会自动丢弃行尾连续的空字段,导致数组下标越界报错。
  • 你读取到的空字段本质是拆分后得到的空字符串,并非Scala的null值,因此搜索null替换的相关方法不适用,直接判断字段是否为空即可实现替换。
  • 提前统一处理所有字段,避免对同一行重复执行split操作,既减少冗余代码也能提升运行效率,不需要调用update、filter方法,使用map遍历转换更适配当前场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:06:03