我正在尝试进行挑战,但是我偶然发现错误,因为我的索引超出范围。我不知道可能是什么问题。
我尝试了所有想到的事情。感谢您的帮助。
func countApplesAndOranges(s: Int, t: Int, a: Int, b: Int, apples: [Int], oranges: [Int]) -> Void {
var positionApples : [Int] = apples
var positionOranges : [Int] = oranges
for i in positionApples {
positionApples[i] += a //This line
}
for i in positionOranges {
positionOranges[i] += b //This line
}
var hitApples : Int = 0
var hitOranges : Int = 0
for i in positionApples {
if i >= s && i <= t {
hitApples += 1
}
}
for i in positionOranges {
if i >= s && i <= t {
hitOranges += 1
}
}
print(hitApples)
print(hitOranges)
}
数组苹果和橙子应复制到positionApples和positionOranges。然后,应将值添加到数组中的每个项目,但这只会引发运行时错误。
答案 0 :(得分:3)
假设apples
的值为[2, 4, 6, 8]
,然后输入代码
for i in positionApples {
print(i)
}
打印元素 2,4、6、8,而不打印索引 0、1、2、3,因此在
的第二次迭代中
for i in positionApples {
positionApples[i] += a //This line
}
i
是4,但结束索引实际上是3,并且代码将是。
如果需要循环索引枚举数组
for (index, element) in positionApples.enumerated() {
print(index, element)
}
答案 1 :(得分:0)
可以说,我们按如下所示调用此方法。
countApplesAndOranges(s: 3, t: 3, a: 3, b: 3, apples: [1,2,3], oranges: [4,5,6])
在下面的代码中,for循环中i
的可能值为1,2,3。但是positionApples的实际索引只能是0,1,2。当它尝试访问index = 3的数组时,它抛出
“致命错误:索引超出范围”
for i in positionApples {
positionApples[i] += a //This line
}
答案 2 :(得分:0)
我想这就是你想要做的。
for i in 0 ..< positionApples.count {
positionApples[i] += a
}
这样,您可以修改数组中的每个元素。