2

我想在 Dart 服务器应用程序中从控制台读取不同的数据,例如:

forename :用户输入并输入
lastname :用户输入并输入
age :用户输入并输入

以下代码有效,但仅适用于 1 个输入项:

var stream = new StringInputStream(stdin);
stream.onData = () {
    voornaam = stream.readLine();
};

但我无法让它适用于多个项目。在 Dart 中是否有一种简单的方法可以做到这一点?

谢谢!

4

2 回答 2

1

由于您使用的是 aStringInputStream而不仅仅是一个 standard InputStream,并且因为您正在寻找阅读文本。除非有特殊原因,否则我建议使用onLine处理程序而不是onData. On data 基本上会尝试“流式传输”信息,因为它会立即被调用,而不是在新行本身上。尝试以下操作(注意,代码不完整,缺少正确的错误处理等)

#import('dart:io');

main() {
  var stream = new StringInputStream(stdin);
  stream.onLine = () {
    var str = stream.readLine().trim();
    print(str.toUpperCase());
    if(str == 'EXIT') exit(0);
  };
}

需要指出的另一点是,如果您曾经使用数据流处理并使用onData处理程序,建议您使用该read方法,而不是readLine检索您的内容的方法,同样由于 onData 的性质不等待在被调用之前要接收的整行文本。

于 2012-09-28T12:48:10.253 回答
0
import 'dart:io';

void main() {
  print('-----welcome-----');
  print('what is your firstname');
  var fname = stdin.readLineSync();
  print('what is your lastname');
  var lname = stdin.readLineSync();
  print('what is your age');
  int age = int.parse(stdin.readLineSync());
  int left = 100 - age;
  print('your name is $fname $lname  and you are  $age years');
}
于 2021-01-19T01:07:11.750 回答