Dart用户输入两数求和程序无法编译的问题排查
Dart代码编译错误排查与修复
先看你贴的原代码:
import "dart:math"; import "dart:io"; void main(){ print("enter first number"); double num1 = double.parse(stdin.readLineSync()); print("enter second number"); double num2 = double.parse((stdin.readLineSync()); print ( num1 + num2 ); }
这段代码有三个问题导致编译/运行异常:
- 语法错误:第二行数字解析处多写了一个左括号,
double.parse((stdin.readLineSync());这里的嵌套左括号完全多余,直接破坏了语法结构,导致编译失败。 - Null安全问题:
stdin.readLineSync()在用户无输入或触发EOF时会返回null,而double.parse不接受null参数,直接传递会触发运行时错误,需要用!断言输入非null,或者提前做null检查。 - 冗余导入:
import "dart:math";代码里完全没用到math库的内容,属于多余导入,可直接删除。
修正后的基础版代码:
import "dart:io"; void main(){ print("enter first number"); double num1 = double.parse(stdin.readLineSync()!); print("enter second number"); double num2 = double.parse(stdin.readLineSync()!); print(num1 + num2); }
如果想让代码更健壮,避免用户输入非数字导致崩溃,可以加上异常处理:
import "dart:io"; void main(){ print("enter first number"); String? input1 = stdin.readLineSync(); while(input1 == null || double.tryParse(input1) == null){ print("请输入有效的数字:"); input1 = stdin.readLineSync(); } double num1 = double.parse(input1); print("enter second number"); String? input2 = stdin.readLineSync(); while(input2 == null || double.tryParse(input2) == null){ print("请输入有效的数字:"); input2 = stdin.readLineSync(); } double num2 = double.parse(input2); print(num1 + num2); }
内容的提问来源于stack exchange,提问作者Jsent
相关产品推荐
相关产品推荐

