错误:参数类型“字符串?”不能分配给参数类型'String',因为'String?'可以为空,而'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' 不是。varbirthyearint = int.parse(birthyear); ^

回答

该错误是由 Dart 中的 null 安全功能引起的,请参阅https://dart.dev/null-safety。

方法的结果stdin.readLineSync()String?,即它可能是a 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);
}


以上是错误:参数类型“字符串?”不能分配给参数类型'String',因为'String?'可以为空,而'String'不是的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>