You need to enable JavaScript to run this app. Dart 2.12.2 环境下实现年龄计算的代码运行报错,问题出在哪?
优惠活动
大模型
产品
解决方案
定价
更多

Dart 2.12.2 环境下实现年龄计算的代码运行报错,问题出在哪?

代码存在的核心问题

  • 变量传值错误:写解析逻辑时不小心给birth_year加了双引号,代码会把字符串"birth_year"本身当作待解析内容,根本不会读取用户输入的年份值,直接触发格式解析异常。
  • 循环逻辑错误:循环初始值i=1,迭代步骤写的是i--,导致i从1开始逐次变小,永远满足i < 10的判断条件,程序会陷入无限循环根本停不下来,和预期的“循环9次计算年龄”的逻辑完全相反,正确的迭代步骤应该是i++。
  • 空安全兼容问题:Dart 2.12 是首次落地空安全的稳定版本,stdin.readLineSync()的返回值是可空的String?类型,没有做空值校验直接传给num.parse(),会直接触发类型不匹配的编译报错。

修正后的可运行代码

import 'dart:io';

void main() {
  for (var i = 1; i < 10; i++) {
    try {
      print("Your birth year is : ");
      var birthYear = stdin.readLineSync();
      // 处理空输入的情况,适配空安全规则
      if (birthYear == null) continue;
      // 移除多余的字符串引号,直接解析输入的年份值
      var age = DateTime.now().year - num.parse(birthYear);
      print("$age");
    } on FormatException {
      print("Invalid");
    }
  }
}

内容的提问来源于stack exchange,提问作者Mickel Antoine Naim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 20:15:03