итерировать по количеству четных чисел в массиве, выводить количество и четные числа в SWIFT - PullRequest
0 голосов
/ 08 февраля 2019
import UIKit


var myArray = [1,2,3,4,5,6,7,8,9,10];
for myInt: Int in myArray{
//counts numbers in array
for i in 0..<myArray.count{
    //to find even number
    if myInt % 2 == 0 {


        print("Record Number \(i): \(myInt)")
}}}

он распечатывает каждое четное число 10 раз, и мне нужно только, чтобы распечатать счет: четное число.

1 Ответ

0 голосов
/ 08 февраля 2019

Ваша цель - подсчитать, сколько элементов соответствует условию, которое в вашем случае, если число четное (number % 2 == 0), а затем вам нужно его распечатать.

Для этого сначала получите число этихэлементы, которые соответствуют условию, а затем выведите это число.

Чтобы его было проще понять, я оставлю ваш для каждого цикла

var matching = 0

for myInt in myArray {

    if myInt % 2 == 0 {
        matching += 1 // if number matching condition, increase count of matching elements
    }

}

print(number)

В любом случае вы можете сделать это намного проще, используя дляпример подсчета для отфильтрованных элементов (он подсчитывает, сколько элементов было отфильтровано)

let matching = myArray.filter({ $0 % 2 == 0 }).count

или вы можете использовать reduce, которые увеличивают начальное значение каждый раз, когда условие элемента соответствует

let matching = myArray.reduce(0) { $1 % 2 == 0 ? $0 + 1 : $0 }

На будущее: в Swift 5 вы можете использовать недавно введенный метод count(where:), который подсчитывает количество элементов, соответствующих условию

let matching = myArray.count(where: { $0 % 2 == 0 })
...