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

Dart如何单行输入空格分隔的字符串/数字列表元素

Dart 适配单行空格分隔列表输入的实现方案

核心修改思路

原代码通过循环逐行读取单个列表元素,仅支持每行一个数字的输入模式。要适配第二行以空格分隔输入全部n个元素的场景,核心是将逐行读单个值的逻辑,替换为一次性读取第二行完整字符串,按空白分割后批量转换为整数即可,无需引入第三方依赖。

修改后可直接运行的完整代码

import 'dart:io';

void main() {
  int? n = int.parse(stdin.readLineSync()!);

  print("value of n: $n and run time type: ${n.runtimeType}");
  List<int> list1 = [];
  // 读取第二行整行输入,去除首尾空白后按连续空白分割
  String inputLine = stdin.readLineSync()!.trim();
  List<String> elements = inputLine.split(RegExp(r'\s+'));
  
  for (int i = 0; i < n; i++) {
    list1.add(int.parse(elements[i]));
  }
  print("List 1: $list1");
}

关键逻辑说明

  • 用trim()处理输入字符串的首尾空白,避免用户在行首、行尾误输入多余空格、换行符,导致分割出空字符串触发解析报错
  • 分割字符串时使用正则RegExp(r'\s+')匹配一个或多个连续空白字符,兼容输入时数字间打了多个空格、误按Tab键的场景,容错性更高
  • 替换原代码的insert方法为add方法,由于是按顺序向列表尾部追加元素,不需要指定插入索引,执行效率更高

运行效果验证

当输入格式为:

5
1 2 3 4 5

程序输出结果和原逐行输入模式完全一致:

value of n: 5 and run time type: int
List 1: [1, 2, 3, 4, 5]

如果需要同时兼容「逐行输入n个元素」和「单行空格输入n个元素」两种输入模式,可以增加一层判断:如果读取到的第二行内容分割后长度为1,就继续循环读取剩余的n-1行输入即可,可按需调整逻辑。

内容的提问来源于stack exchange,提问作者Taufiq Ahommed Neloy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 22:48:22