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
相关产品推荐
相关产品推荐

