List for循环输出错误

List for循环输出错误,list,dart,List,Dart,我使用了一个变量j,它在for循环每次执行时递增,以计算它运行的循环数,并在列表a中添加I的值,然后将列表a添加到b中,但在打印b时,它打印了错误的输出 我的代码:- void main() { var a=[]; var b=[]; int j=0; for (int i = 0; i < 5; i++) { j++; a.add(i); if(j>=4) { b.addAll(a); print(b);

我使用了一个变量j,它在for循环每次执行时递增,以计算它运行的循环数,并在列表a中添加I的值,然后将列表a添加到b中,但在打印b时,它打印了错误的输出

我的代码:-

void main() {
  var a=[];
  var b=[];
  int j=0;
  for (int i = 0; i < 5; i++) {
    j++;
    a.add(i);
    if(j>=4)
    {
      b.addAll(a);
      print(b);
    }
  }
}
void main(){
var a=[];
var b=[];
int j=0;
对于(int i=0;i<5;i++){
j++;
a、 加(i);
如果(j>=4)
{
b、 阿道尔(a);
印刷品(b);
}
}
}
逻辑上它应该打印[0,1,2,3,4],但它正在打印:-

[0,1,2,3]


[0,1,2,3,0,1,2,3,4]

它打印两次,第二次重复相同列表的原因是因为您的逻辑是
j>=4
。它被击中了两次。如果您只想让它获得一次,则需要删除
=

void main(){
var a=[];
var b=[];
int j=0;
对于(int i=0;i<5;i++){
j++;
a、 加(i);
如果(j>4)
{
b、 阿道尔(a);
印刷品(b);
}
}
}

这是因为您引用的是
j
,而不是
i
j
将达到5,因此您的逻辑
j>=4
适用于4和5,而
i
不会,因为它最多只能达到4。

这是一个非常严重的算法。我还没有掌握如此复杂的算法。它几乎就像一个神经网络。