Swift - 在尝试自动填充数组时索引超出范围

时间:2018-02-09 17:50:04

标签: arrays swift loops

所以,我是swift的新手并尝试进行循环计算,我将描述

我有一个已经有几个元素的数组 所以我声明了一个变量来执行一个值等于2的循环,(i=2) 那么,从另一个方程式我得到一个int数字,它定义了数组中元素的最终数量(比如limit = 19

所以我目前的代码如下:

//I declare my array
var velocityArray: [Double] = []
var densityArray: [Double] = []
//first and second element appended after declaring by another function

while i <= limit
{
var velocity = initialflow/(densityArray[i - 1] * area)
velocityArray.append(velocity)

i = i + 1
}

因此,当我尝试运行此代码时,在计算变量速度的行上出现“索引超出范围”错误。

如果我声明我的变量限制等于2,那么循环变量'i'和'limit'变量都是相等的。事实证明它运行正常,它正确地将元素作为数组的第三个元素附加,但如果我尝试执行循环它就行不通,它可能是一个愚蠢的问题,但我似乎无法自己弄清楚。

谢谢大家的阅读和帮助,欢呼。

1 个答案:

答案 0 :(得分:0)

目前,您正在使用i对数组建立索引,其中&lt; = limit。无论如何,在访问它之前,你应该检查任何索引的数组计数,在densityArray为空的旁边:

while i >= 0 && i < densityArray.count
{
    var velocity = initialflow/(densityArray[i] * area)
    velocityArray.append(velocity)
    i = i + 1
 }