Dart 错误:参数类型';字符串?';can';不能分配给参数类型';字符串';因为';字符串?';可为空且';字符串';isn';T
你好, 我一直在尝试以下代码:Dart 错误:参数类型';字符串?';can';不能分配给参数类型';字符串';因为';字符串?';可为空且';字符串';isn';T,dart,Dart,你好, 我一直在尝试以下代码: import 'dart:io'; main (){ print ("write your birth year:"); var birthyear = stdin.readLineSync(); var birthyearint = int.parse(birthyear); var age = 2021-birthyearint; print(age); } 运行时,我收到以下错误: 5:30:错误:无法将参数类型“String”分配给参
import 'dart:io';
main (){
print ("write your birth year:");
var birthyear = stdin.readLineSync();
var birthyearint = int.parse(birthyear);
var age = 2021-birthyearint;
print(age);
}
运行时,我收到以下错误:
5:30:错误:无法将参数类型“String”分配给参数类型“String”,因为“String”可为null,而“String”不可为null。
var birthyearint=int.parse(birthyear);
^该错误是由Dart中的空安全功能引起的,请参阅 方法
stdin.readLineSync()
的结果是String?
,即它可能是字符串
,也可能是null
。方法int.parse()
需要一个(非空)字符串。您应该检查用户是否提供了一些输入,然后可以使用birthyear断言该值为非null代码>。更好的是,您应该使用int.tryParse()
检查用户输入是否为有效整数,例如:
var birthyearint = int.tryParse(birthyear ?? "");
if (birthyearint == null) {
print("bad year");
} else {
var age = 2021-birthyearint;
print(age);
}
此错误的解决方案;只需添加:var birthyear=stdin.readLineSync()
;从键盘上读;这个错误也是由Dart中的空安全特性引起的:我尝试了这个并成功通过了。
此链接可以帮助您:
..
.
.
.