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

如何在Dart中解析String?类型变量?解决类型不匹配错误

解决Dart中String?转数值的类型错误

你遇到的问题是因为stdin.readLineSync()返回的String?类型可能为null,而int.parse()要求传入非null的String参数,所以需要先处理null的情况,以下是几种可行的解决方式:

1. 先做空检查再解析

先判断变量是否不为null,再执行解析操作,避免null传入:

stdout.write("Enter the first number - ");
String? vari = stdin.readLineSync();
if (vari != null) {
  var first = int.parse(vari);
  // 后续使用first的逻辑
} else {
  // 处理输入为null的情况,比如提示用户重新输入
  print("输入不能为空,请重新输入");
}

2. 使用null断言运算符(!)

如果你能确定输入绝对不会为null(比如用户一定会输入内容),可以用!强制告诉编译器变量不为null,但如果实际为null会抛出异常:

stdout.write("Enter the first number - ");
String? vari = stdin.readLineSync();
var first = int.parse(vari!);

3. 结合空合并运算符设置默认值

如果输入为null,用默认字符串代替,再解析成数值:

stdout.write("Enter the first number - ");
String? vari = stdin.readLineSync();
var first = int.parse(vari ?? "0"); // 输入为null时默认解析为0

4. 使用int.tryParse更安全地处理

int.tryParse()会在输入无效(包括null、非数字字符串)时返回null,适合需要容错的场景:

stdout.write("Enter the first number - ");
String? vari = stdin.readLineSync();
int? first = int.tryParse(vari ?? "");
if (first != null) {
  // 解析成功,使用first
} else {
  // 解析失败,提示用户输入有效数字
  print("请输入有效的数字");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 10:15:33