我正在学习Swift的语法,想知道为什么下面的代码无法按我期望的那样工作:
for i in 1...100{ switch (i){ case 1: Int(i%3) == 0 println("Fizz") case 2: Int(i%5) == 0 println("Buzz") default: println("\(i)") } }
我想每次将数字除以3(3、6、9、12等)时都打印Fizz,并且每次将其除以5时都打印Buzz,那么缺少哪一块拼图?
注意:我确实使用以下方法解决了问题:
for ( var i = 0; i < 101; i++){ if (Int(i%3) == 0){ println("Fizz") } else if (Int(i%5) == 0){ println("Buzz") } else { println("\(i)") } }
我想知道如何使用Switch解决此问题。谢谢。
FizzBuzz游戏的通常规则 是用“ Fizz”替换每个3的倍数,用“ Buzz”替换每个5的倍数, 并 用“ FizzBuzz” 替换3 和 5的每个倍数。
这可以通过在元组上使用switch语句来完成(i % 3, i % 5)。请注意,这_意味着“任何值”:
(i % 3, i % 5)
_
for i in 1 ... 100 { switch (i % 3, i % 5) { case (0, 0): print("FizzBuzz") case (0, _): print("Fizz") case (_, 0): print("Buzz") default: print(i) } }