【问题标题】:Reading multiple inputs from Dart Console从 Dart 控制台读取多个输入
【发布时间】:2012-09-28 08:59:00
【问题描述】:

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

forename : 用户输入并输入
姓氏:用户输入并输入
age : 用户输入并进入

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

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

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

谢谢!

【问题讨论】:

    标签: dart dart-io


    【解决方案1】:

    因为您使用的是StringInputStream 而不仅仅是标准的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 的性质,在被调用之前不会等待接收到整行文本。

    【讨论】:

      【解决方案2】:
      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');
      }
      

      【讨论】:

        猜你喜欢
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-27
        • 2011-10-11
        • 1970-01-01
        相关资源
        最近更新 更多