You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 21:55:39