0

私は Dart を使用しており、低レベルのプロジェクト オイラーの問題を解決しようとしています。この問題は、素数カウンターと最大素因数問題の両方に当てはまります。

これが単体テストと生成される以下のエラーです(私の他の2つの単体テストは正常に評価されます):

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 に答える