【发布时间】:2016-07-14 04:06:46
【问题描述】:
我创建了一个数字数组,尝试填写它们的规则或随机大小 NxN,然后查找每个对角线中的数量并推导出它。帮助理解我在 cmets 中指出的错误。我究竟做错了什么?谢谢!
func diagonals (n:Int) -> String{
var sumFirst: Int
var sumSecond: Int
var multArray = Array(count: n, repeatedValue: Array(count: n, repeatedValue: 0))
print(multArray) //create 2d array NxN with Initialisation
for var i in multArray {
for var k in multArray {
multArray[i][k] = i+k // fill array elements the sum of the indices (error line) or we can fill it random, but how?
if i==k { //check element on the main diagonal
sumFirst += multArray[i][k] // do sum (error line)
}
if (i+k) == n { //check element on secondary diagonal (error line)
sumSecond += multArray[i][k] // do sum (error line)
}
}
}
return "Sum elemets on main diagonal =\(sumFirst) and second =\(sumSecond)"
}
diagonals(3)
【问题讨论】:
-
错误显示
error: cannot subscript a value of type 'Array<[Int]>' (aka 'Array<Array<Int>>') with an index of type 'Array<Int>',因为i和k是elements -> (arrays)在您的multArray,因此您不能将数组分配给Int,以更接近您的目标使用enumerate() method 来获取数组的索引,就像for (indexI, elementI) in multArray.enumerate()and 也为你的第二个在for (indexK, elementK) in multArray.enumerate() -
@ronatory 谢谢你,朋友!我更正并在回复中写下了决定。
-
不客气,但我也建议 Sulthan 在您的决定中给出提示
标签: arrays swift multidimensional-array random