2013-07-29 51 views
0

的名單,試圖做一些低層次的項目歐拉問題;這個問題是兩個素數計數器和最大的主要因素問題。飛鏢 - 獲取的RangeError涉及迭代在我使用的飛鏢號

這裏是單元測試和下面被產生的誤差(我的其他兩個單元測試評估精細):

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); 
    } 
    } 
} 

回答

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

var start = prime_list[-1]; 

-1永遠不會成爲一個列表有效的索引,因此超出範圍的錯誤。

我假設你試圖獲得列表中的最後一個元素,而不是使用list.last