一尘不染

Swift中的Switch语句

swift

我正在学习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解决此问题。谢谢。


阅读 216

收藏
2020-07-07

共1个答案

一尘不染

FizzBu​​zz游戏的通常规则 是用“
Fizz”替换每个3的倍数,用“ Buzz”替换每个5的倍数, 用“ FizzBu​​zz” 替换3 5的每个倍数。

这可以通过在元组上使用switch语句来完成(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)
    }
}
2020-07-07