检查Swift中的奇数和偶数(iOS)

Asi*_*lal 44 ios swift

我有一个类型为Int的数字数组.我想循环遍历数字列表以获得Swift编程语言(iOS8)中的奇数和偶数.模数(%)运算符在此处不适用于被除数(/)运算符.我不知道怎么计算呢?

提前致谢.

Cha*_*sha 88

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")
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 这是一种实用的方法:让数字= [0,1,2,3]让偶数字=数字.filter {$ 0%2 == 0}让奇数=数字.filter {$ 0%2!= 0} (2认同)

num*_*8er 25

if yourNumber % 2 == 0 {
 //even Number
} else {
 // Odd number
}
Run Code Online (Sandbox Code Playgroud)

取自这里

要么

if yourNumber.remainder(dividingBy: 2) == 0 {                
  //even Number 
}
else {
  // odd Number
}
Run Code Online (Sandbox Code Playgroud)

取自这里

  • 那么有更好更好的方法来使用AND(&)运算符让inputArray = [23,25,2,4,9]为inputArray中的x {if(x&1 == 1){print("odd") } else {print("even")}} (3认同)
  • SHORT WAY扩展Int {func isEven() - > Bool {return(self%2 == 0)}} (3认同)
  • **仍然更短**:`extension Int {var isEven:Bool {return(self%2 == 0)}}` (2认同)

pka*_*amb 12

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

let even = binaryInteger.isMultiple(of: 2) 
let odd = !binaryInteger.isMultiple(of: 2)
Run Code Online (Sandbox Code Playgroud)

此函数可用于代替%奇数/偶数检查。


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

值得注意的是,isEvenisOdd被提出,但不是在同一个评审接受的:

鉴于添加isMultiple(of:),核心团队认为isEvenisOdd没有提供比isMultiple(of: 2).

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

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

extension BinaryInteger {
    var isEven: Bool { isMultiple(of: 2) }
    var isOdd:  Bool { !isEven }
}
Run Code Online (Sandbox Code Playgroud)


pka*_*amb 7

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

https://en.wikipedia.org/wiki/Parity_(数学)

您可以扩展 SwiftBinaryInteger协议以包含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) }
}
Run Code Online (Sandbox Code Playgroud)

这使您能够switch在整数上优雅地处理两种情况:

switch 42.parity {
case .even:
    print("Even Number")
case .odd:
    print("Odd Number")
}
Run Code Online (Sandbox Code Playgroud)