美好的一天, 我一直在尝试以下代码:
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' 不是。 varbirthyearint = int.parse(birthyear); ^
答案 0 :(得分:4)
该错误是由 Dart 中的空安全特性引起的,请参阅 https://dart.dev/null-safety。
方法stdin.readLineSync()
的结果是String?
,即可能是String
,也可能是null
。方法 int.parse()
需要(非空)String
。您应该检查用户是否提供了一些输入,然后您可以使用 birthyear!
断言该值是非空的。更好的是,您应该使用 int.tryParse()
来检查用户输入是否为有效整数,例如:
var birthyearint = int.tryParse(birthyear ?? "");
if (birthyearint == null) {
print("bad year");
} else {
var age = 2021-birthyearint;
print(age);
}
答案 1 :(得分:0)
此错误的解决方案;只需添加:var birthyear = stdin.readLineSync()
;从键盘读取;此错误也是由 Dart 中的 null 安全功能引起的:我尝试过此操作并成功通过。
此链接可能对您有所帮助:https://dart.dev/guides/libraries/library-tour
..
.
.
.
.