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
相关产品推荐
相关产品推荐

