首页 > 解决方案 > 我想知道在 for 循环中使用 list.length 和使用 var (int length = list.length) 之间的区别

问题描述

void main() {
  List arr = [1, 2, 3, 4, 5];
  int sums = 0;
  List all = [];
  int length = arr.length;
  for (int i = 0; i < length; i++) {
    for (int j = 0; j < /**/ length - 1 /**/; j++) {
      if (arr[i] == arr[j]) {
        print('removed $i = ${arr[j]}');
        arr.removeAt(j);
      }
      print('$i = ${arr[j]}');
      sums += arr[j];
    }
    all.add(sums);
    sums = 0;
    arr.clear();
    arr = [1, 2, 3, 4, 5];
  }
  print(all);
}

上面的代码打印 [14, 13, 12, 11, 10]
但如果我使用arr.length-1它打印 [9, 8, 7, 11, 10]

void main() {
    List arr = [1, 2, 3, 4, 5];
    int sums = 0;
    List all = [];
    int length = arr.length;
    for (int i = 0; i < length; i++) {
    for (int j = 0; j < /**/ arr.length - 1 /**/; j++) {
        if (arr[i] == arr[j]) {
        print('removed $i = ${arr[j]}');
        arr.removeAt(j);
        }
        print('$i = ${arr[j]}');
        sums += arr[j];
    }
    all.add(sums);
    sums = 0;
    arr.clear();
    arr = [1, 2, 3, 4, 5];
    }
    print(all);
}

标签: arrayslistfor-loopdartnested-for-loop

解决方案


推荐阅读