检查Odd& Swift中的偶数(iOS)

时间:2014-06-05 09:52:20

标签: ios swift

我有一个输入Int的数字数组。我想循环遍历数字列表以获得Odd&甚至是Swift编程语言(iOS8)中的数字。模数(%)运算符在此处不适用于被除数(/)运算符。我不知道如何计算它?

提前致谢。

5 个答案:

答案 0 :(得分:80)

var myArray = [23, 54, 51, 98, 54, 23, 32];
for myInt: Int in myArray{
  if myInt % 2 == 0 {
    println("\(myInt) is even number")
  } else {
    println("\(myInt) is odd number")
  }
}

答案 1 :(得分:24)

if yourNumber % 2 == 0 {
 //even Number
} else {
 // Odd number
}

取自here

if yourNumber.remainder(dividingBy: 2) == 0 {                
  //even Number 
}
else {
  // odd Number
}

取自here

答案 2 :(得分:9)

Swift 5将功能isMultiple(of:)添加到BinaryInteger协议中。

let even = binaryInteger.isMultiple(of: 2) 
let odd = !binaryInteger.isMultiple(of: 2)

此功能可以代替%进行奇/偶校验。


此功能是通过Swift Evolution流程添加的:

值得注意的是,提出了isEvenisOdd,但在同一评论中未接受

考虑到增加了isMultiple(of:),核心团队认为isEvenisOddisMultiple(of: 2)相比没有实质性优势。

因此,该提案已接受修改isMultiple(of:)被接受,但isEvenisOdd被拒绝。

如果需要,可以通过扩展轻松添加这些方法:

extension BinaryInteger {
    var isEven: Bool { isMultiple(of: 2) }
    var isOdd:  Bool { !isEven }
}

答案 3 :(得分:3)

“奇偶校验”是奇数和偶数数学概念的名称:

https://en.wikipedia.org/wiki/Parity_(mathematics)

您可以扩展Swift BinaryInteger协议以包括一个parity枚举值:

enum Parity {
    case even, odd

    init<T>(_ integer: T) where T : BinaryInteger {
        self = integer.isMultiple(of: 2) ? .even : .odd
    }
}

extension BinaryInteger {
    var parity: Parity { Parity(self) }
}

这使您可以switch使用整数并优雅地处理两种情况:

switch 42.parity {
case .even:
    print("Even Number")
case .odd:
    print("Odd Number")
}

答案 4 :(得分:0)

您可以使用filter方法:

let numbers = [1,2,3,4,5,6,7,8,9,10]
let odd = numbers.filter { $0 % 2 == 1 }
let even = numbers.filter { $0 % 2 == 0 }