如何在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
相关产品推荐
相关产品推荐

