如何将整数作为Dart中的输入?

如何将整数作为Dart中的输入?,dart,Dart,我试图在Dart中使用整数作为输入,正如许多资料中所建议的那样 import 'dart:io'; void main() { int n = int.parse(stdin.readLineSync()); } 但是,当我尝试运行Visual Studio代码时,显示了以下错误消息,该代码也出现了问题: 错误:无法将参数类型“String”分配给参数类型“String”,因为“String”可为空,而“String”不可为空 现在,我如何将整数或双精度作为输入?我使用的是Dart

我试图在Dart中使用整数作为输入,正如许多资料中所建议的那样

import 'dart:io';

  void main() {
  int n = int.parse(stdin.readLineSync());
}
但是,当我尝试运行Visual Studio代码时,显示了以下错误消息,该代码也出现了问题:

错误:无法将参数类型“String”分配给参数类型“String”,因为“String”可为空,而“String”不可为空


现在,我如何将整数或双精度作为输入?我使用的是Dart SDK版本:2.12.2稳定

默认情况下,Dart 2.12.2使用的是空安全性

返回字符串?这是一个可为空的值

但是,由于空安全性,请使用不能为空的字符串。这就是错误所在

为了解决这个问题,您必须在使用它之前检查is return null

import 'dart:io';

void main() {
  String? s = stdin.readLineSync();
  if (s != null){
    int n = int.parse(s);
    print(n); // Or do whatever you want with your n value
  }
}
处理int、double和String的示例:


昨天和今天提出了这个问题的两个版本。建议在询问新问题之前,使用错误消息搜索以查找以前的问题。然后你会发现:这能回答你的问题吗@PatrickO'Hara没有。我仍然无法接受输入,因为它没有建议如何将输入作为整数/双精度。我需要的是一种将输入作为inetger/double/string的方法。我添加了一个全面的答案。在这样做的时候=空条件没有得到满足,因此我无法获取所需的输入。它适合我。只需添加printn;解析后。不幸的是,我的方法不起作用。如果你添加了一个带有打印的else条件,它会通过吗?是的,在这种情况下,会使用else条件。难道不可能像在C/C++、python等中那样接受输入吗?Dart readLineSync方法肯定可以与C GET和python输入函数相媲美吗?我不知道有哪种Dart等效于C scanf函数。但在我的例子中,当我使用readLineSync获取输入时,获取输入的格式是字符串?当我使用int.parse将其更改为整数时,总是会出现问题中提到的错误,因此我无法将输入作为整数以及double和string。只有绳子?类型输入是可能的。readLineSync方法返回用户输入的字符串或null,因此类型为string?。由您的代码来解释字符串。您可以将其解释为任何您想要的内容,上面的代码解析字符串以查看它是int还是double,但是您可以编写代码来匹配任何输入序列。这个包裹在这里有帮助。
import 'dart:io';

void main() {
  String? s = stdin.readLineSync();
  if (s != null) {
    if (int.tryParse(s) != null) {
      int n = int.parse(s);
      print('int $n'); // Or do whatever you want with your int value
    } else if (double.tryParse(s) != null) {
      double d = double.parse(s);
      print('double $d'); // Or do whatever you want with your double value
    } else {
      print('string "$s"'); // Or do whatever you want with your string value
    }
  }
}