Swift: индекс вне диапазона (для) - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь сделать вызов, но я наткнулся на ошибку, что мой индекс находится вне диапазона.Я не знаю, в чем может быть проблема.

Я пробовал все, что приходило мне в голову.Спасибо за любую помощь.

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.Затем к каждому элементу в массиве должно быть добавлено значение, но это просто выдает ошибку времени выполнения.

Ответы [ 3 ]

3 голосов
/ 02 мая 2019

Предполагая, что значение 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)
}
0 голосов
/ 02 мая 2019

Я думаю, это то, что вы хотели сделать.

for i in 0 ..< positionApples.count {
    positionApples[i] += a
}

Таким образом, вы можете изменить каждый элемент в массиве.

0 голосов
/ 02 мая 2019

Допустим, мы вызываем этот метод, как показано ниже.

countApplesAndOranges(s: 3, t: 3, a: 3, b: 3, apples: [1,2,3], oranges: [4,5,6])

В приведенном ниже коде возможное значение i в цикле for равно 1,2,3.Но фактические индексы positionApples могут быть только 0,1,2.Когда он пытается получить доступ к массиву с индексом = 3, он выдает

«Неустранимая ошибка: индекс выходит за пределы диапазона»

for i in positionApples {
    positionApples[i] += a //This line
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...