2015-02-04 46 views
0

我是Swift的新手。在Playground中嘗試此代碼並獲取錯誤(請參閱下面的說明)請您指點我正確的方向 - 在哪裏尋找解決方案?提前致謝。在Swift中總結數組值的錯誤

func randomSet(num: Int, max: Int) -> Array<Double> { 

    var randArray = Array<Double>() 

    for index in 0...num { 
     randArray[index] = Double(arc4random_uniform(max+1)) 
    } 

ERROR: var sum = randArray.reduce(0) {$0 + $1} 

    for index in 0...num { 
     randArray[index] = randArray[index]/Double(sum) * Double(max) 
    } 

    return randArray 
} 

test = randomSet(10, 100) 

上線打上字錯誤,我得到這個:

執行被中斷,原因是:EXC_BAD_INSTRUCTION(代碼= EXC_I386_INVOP,子碼=爲0x0)

+3

請[編輯]您的文章的標題更具描述性的問題。 *我怎樣才能糾正這個問題?*當將來的用戶在搜索結果中顯示時,*將毫無意義。你的頭銜應該描述問題或者包含一個具有一定相關性的描述性問題。謝謝。 –

+0

請注意'0 ... num' *包含*範圍結束符,因此會給您一個包含'num + 1'元素的數組。您可能需要改爲「0 ..

回答

1

錯誤實際上是由試圖引起使用下標在randArray附加值。您應該使用append代替:

for _ in 0...num { 
    randArray.append(Double(arc4random_uniform(max+1))) 
} 
+0

謝謝。這有幫助! –

1

bug是不是從功能降低,但在你的陣列的初始化,無法初始化之前訪問索引。下面的代碼修復了這個錯誤。

for index in 0...num { 
    randArray.append(Double(arc4random_uniform(max+1))) 
    } 

希望幫助

+0

謝謝哈姆扎,這讓我更加清楚!換句話說,我必須在我可以使用索引之前用一些值填充我的數組。得到它了。 –