我有一个输入Int的数字数组。我想循环遍历数字列表以获得Odd&甚至是Swift编程语言(iOS8)中的数字。模数(%)运算符在此处不适用于被除数(/)运算符。我不知道如何计算它?
提前致谢。
答案 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流程添加的:
值得注意的是,提出了isEven
和isOdd
,但在同一评论中未接受 :
考虑到增加了
isMultiple(of:)
,核心团队认为isEven
和isOdd
与isMultiple(of: 2)
相比没有实质性优势。因此,该提案已接受修改。
isMultiple(of:)
被接受,但isEven
和isOdd
被拒绝。
如果需要,可以通过扩展轻松添加这些方法:
extension BinaryInteger {
var isEven: Bool { isMultiple(of: 2) }
var isOdd: Bool { !isEven }
}
答案 3 :(得分:3)
“奇偶校验”是奇数和偶数数学概念的名称:
您可以扩展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 }