我试图在Swift中使用repeat-while循环。我试图用它来获取数组中的项目并将其添加到变量中。
var finalEquation = ""
var arrayPoint = 0
repeat {
arrayPoint += 1
finalEquation = finalEquation + String(equation[arrayPoint])
} while (arrayPoint < equation.count)
所以我有一个名为&#34; arrayPoint&#34;的变量,每次循环运行时它会递增1。所以我遇到的问题就在于:
finalEquation = finalEquation + String(equation[arrayPoint])
此行获取数组中的项,该项等于 arrayPoint ,并将该数组项添加到变量中。
当我构建并运行代码时,它编译时没有任何错误并且不会阻止我。然后每当循环被激活时,应用程序就会冻结,在输出窗口中,我会得到一些说法。
fatal error: Index out of range
(lldb)
然后在我前面提到的那行代码中,它说:线程1:EXC_BAD_INSTRUCTION
答案 0 :(得分:0)
首先,您可能会在UI线程中运行此循环,这是错误的。 第二,你在获取值之前递增变量。请在finalEquation行之后移动arrayPoint + = 1。
答案 1 :(得分:0)
在使用arrayPoint
之前进行递增会使范围[1,count],但数组只有索引[0,count - 1]。
您应该将增量移动到repeat
块中的最后一个。
var finalEquation = ""
var arrayPoint = 0
repeat {
finalEquation = finalEquation + String(equation[arrayPoint])
arrayPoint += 1
} while (arrayPoint < equation.count)
另一方面,arrayIndex
将是一个更恰当的名称。用于引用数组中元素的数字称为“索引”。
此外,您应该阅读断点,以便您可以自己更好地调试这样的错误。