0

我正在使用 Dart,试图做一些低级项目的欧拉问题;这个问题既适用于素数计数器问题,也适用于最大素数问题。

这是单元测试和下面产生的错误(我的其他两个单元测试评估良好):

test('evaluate if target is not factorable', () {
  // Arrange
  var maximum = 14;
  var control_list_of_primes = <int>[2,3,5,7,11];
  var test_list_of_primes = <int>[2,3,5,7,11];
  // Act
  prime_list_expansion(maximum, test_list_of_primes);
  // Assert
  expect(test_list_of_primes[-1] == 13, true);
});
ERROR: -prime factor generator- should evaluate if target is not factorable

Test failed: Caught RangeError: -1
List.[] 

这是函数prime_list_expansion(它调用的函数通过了我为它们设计的测试,所以我认为它们不是问题):

prime_list_expansion (int maximum, List prime_list) {
  var start = prime_list[-1];
  for (var i = start; i < maximum; i = i+2) {
    if (target_not_factorable (i, prime_list)) {
      prime_list.add(i);
    }
  }
}
4

1 回答 1

2
expect(test_list_of_primes[-1] == 13, true);

var start = prime_list[-1];

-1永远不会是列表的有效索引,因此超出范围错误。

我假设您正在尝试获取列表中的最后一个元素,而不是使用list.last

于 2013-07-29T05:00:21.187 回答