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

Kotlin解析失败及空指针异常求助:起始日期变量抛出异常

问题分析与解决方案

可能的异常原因

  • SortedExpenseDateHashMap[i]返回null,你用!!强制非空触发了空指针异常:循环的i范围是0 until date,但这个HashMap的key未必是连续的0到date-1的整数,导致索引不存在时取到null。
  • weekStart本身是null,或者格式不符合yyyy-MM-dd,调用dateFormat.parse(start)时抛出解析异常。
  • 强制非空断言!!过于激进,一旦遇到null直接崩溃,没有容错空间。

修正步骤

  1. 替换!!为安全调用,同时增加判空逻辑,避免空指针。
  2. 先校验weekStart和weekEnd的合法性,再进行日期解析。
  3. 确保SortedExpenseDateHashMap的key和循环的i匹配,或者改用遍历HashMap的entrySet来避免索引不匹配问题。

修正后的代码

if (date > 0) { // 选中周的日期数量
    val dateFormat = SimpleDateFormat("yyyy-MM-dd")
    // 如果SortedExpenseDateHashMap的key是连续整数,先判空;否则建议遍历entrySet
    for (i in 0 until date) {
        val tv_Date = TextView(this)
        val sortedDateEntry = SortedDateHashMap[i] ?: continue // 交易日期不存在就跳过当前循环
        val transDate = sortedDateEntry.transactionDate
        val sortedExpenseEntry = SortedExpenseDateHashMap[i] ?: continue // 周起止日期不存在就跳过
        val start = sortedExpenseEntry.weekStart ?: continue
        val end = sortedExpenseEntry.weekEnd ?: continue

        try {
            val startDate = dateFormat.parse(start) ?: continue
            val endDate = dateFormat.parse(end) ?: continue
            val transactionDat = dateFormat.parse(transDate) ?: continue

            if (transactionDat.before(endDate) && transactionDat.after(startDate)) {
                setColor(tv_Date)
                tv_Date.setPadding(10, 15, 10, 10)
                tv_Date.gravity = Gravity.CENTER
                tv_Date.layoutParams = params3
                tv_Date.text = transDate
            }
        } catch (e: ParseException) {
            // 捕获日期解析异常,打印日志或者做容错处理
            e.printStackTrace()
        }
    }
}

额外建议

  • 不要在循环里重复创建SimpleDateFormat,把它提到循环外面,避免重复初始化开销。
  • 如果SortedExpenseDateHashMap的key不是连续整数,建议改用如下遍历方式,避免索引不匹配:
for ((key, entry) in SortedExpenseDateHashMap) {
    // 这里用key去匹配SortedDateHashMap对应的条目
    val sortedDateEntry = SortedDateHashMap[key] ?: continue
    // 后续逻辑同上
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:45:32