我正在努力解决这个任务
使用循环内的标准将小于或等于100的所有奇数添加到奇数数组中
我尝试了以下方法:

var oddNumbers = [Int]()
var numbt = 0
for newNumt in 0..<100 {
    var newNumt = numbt + 1; numbt += 2; oddNumbers.append(newNumt)
}

print(oddNumbers)

这将导致:
1,3,5,7,9,…199
我的问题是:为什么它会打印100以上的数字,尽管我指定了0到100之间的范围?

最佳答案

你犯了一个错误:

for newNumt in 0..<100 {
    var newNumt = numbt + 1; numbt += 2; oddNumbers.append(newNumt)
}

循环内定义的变量newNumt不会影响在newNumt语句中声明的变量for。因此,for循环打印出前100个奇数,而不是0到100之间的奇数。
如果需要使用for循环:
var odds = [Int]()
for number in 0...100 where number % 2 == 1 {
    odds.append(number)
}

或者:
let odds = (0...100).filter { $0 % 2 == 1 }

将从包含0到100项的数组中筛选奇数。要获得更好的实现,请使用stride运算符:
let odds = Array(stride(from: 1, to: 100, by: 2))

关于swift - 在swift中循环使用奇数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41204123/

10-14 20:04
查看更多