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

Dart中创建二维数组并指定索引添加数据失败,求排查解决

问题分析与修复方案

你的代码存在三个核心问题:

  • 数组初始化不完整:var staff = [[]]只创建了包含一个空列表的数组,没有第二个子列表,直接访问staff[1]会触发索引越界错误。
  • 调用add方法的方式错误:staff[0][0].add(b)是在试图给子列表的第0个元素调用add,但这个元素根本不存在——add是列表自身的方法,应该直接在子列表上调用,比如staff[0].add(xxx)。
  • 代码缺少分号,属于语法错误。

修复后的代码:

void main(){
  // 初始化包含两个空列表的二维数组,对应你要的两个子数组
  var staff = [[], []];
  
  int a = 1;
  int b = 2;
    
  // 直接在子列表上调用add添加元素
  staff[0].add(b);
  staff[0].add(a);
  staff[1].add(b);
  staff[1].add(a);
  
  print(staff); // 输出 [[2,1],[2,1]]
}

另一种更灵活的写法(如果不确定子列表数量):

如果需要动态添加子列表,可以先创建空数组,再按需添加子列表和元素:

void main(){
  var staff = [];
  
  int a = 1;
  int b = 2;
  
  // 添加第一个子列表并填充元素
  staff.add([b, a]);
  // 添加第二个子列表并填充元素
  staff.add([b, a]);
  
  print(staff); // 输出 [[2,1],[2,1]]
}

内容的提问来源于stack exchange,提问作者M0NST3R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:22:36