## Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community!

### Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.  # FizzBuzz Swift Challenge

Below is my solution for the FizzBuzz Challenge:

```import UIKit

var number = 30

let fizz = number % 3
let buzz = number % 5

if fizz == 0 && buzz == 0 {
println("FizzBuzz")
} else if fizz == 0{
println("Fizz")
} else if buzz == 0 {
println("Buzz")
}

else {
println("Try Again!")
}
```

If I were to move the "FizzBuzz" check to the end rather than the beginning, it will never return as true. How would I force it to override the others without moving it to the top of the chain?

Hi Chris,

There isn't a way to make a subsequent "else if" statement take precedence over a preceding true "if" statement - the order of the "if" and "else if" is important.

If you really want to move the "FizzBuzz" to the end however, there are a couple of ways you can code this:

```if fizz == 0 && buzz != 0 {
println("Fizz")
} else if buzz == 0 && fizz != 0 {
println("Buzz")
} else if fizz == 0 && buzz == 0 {
println("FizzBuzz")
} else {
println("Try Again!")
}
```

This is testing at each stage to check that the FizzBuzz condition is not met, before exiting the "if" loop.

Alternatively:

```if fizz == 0 {
print("Fizz")
}
if buzz == 0 {
print("Buzz")
}
if fizz != 0 && buzz != 0 {
print("Try Again!")
}
println()
```

This means each "if" statement of the code is checked, regardless of whether the preceding condition is met or not. By using "print" rather than "println", Fizz and Buzz are printed next to each other in the console (i.e. as FizzBuzz) if both conditions are met. Then the println() function at the end means if you are testing a series of numbers, the results are all on different lines.

Hope that helps!

Here is one:

```func fizzbuzz(i: Int) -> String {
let result = (i % 3, i % 5)
switch result {
case (0, _):
return "Fizz"
case (_, 0):
return "Buzz"
case (0, 0):
return "FizzBuzz"
default:
return String(i)
}
}

for number in 1...100 {
println(fizzbuzz(number))
}
``` PLUS
```var number = arc4random_uniform(1000000)

//var number = 8
var divThree = number % 3
var divFive = number % 5

if (divThree == 0) && (divFive == 0) {
println("FishBash")
} else if divFive == 0 {
println("Bash")
} else if divThree == 0 {
println("Fish")
} else {
println("Not Divisible")
}
``` Hey Alex,

That is the same result as my code. My point was that if you change the order to :

```if divFive == 0 {
println("Bash")
} else if divThree == 0 {
println("Fish")
} else if (divThree == 0) && (divFive == 0) {
println("FishBash")
} else {
println("Not Divisible")
```

}

FishBash would not work if var = 30. Hence the question: How would I write this to make sure that irrespective of the order, the && check would supersede the others. PLUS
```var number = 30
var divThree = number % 3
var divFive = number % 5

if (divThree == 0) && (divFive == 0) {
println("FishBash")
} else if divFive == 0 {
println("Bash")
} else if divThree == 0 {
println("Fish")
} else {
println("Not Divisable")
}
``` After playing around with it for awhile, I stumbled on this...

```for i in 1...100 {
switch i {
case _ where i % 3 == 0 && i % 5 == 0:
println("fizzbuzz")
case _ where i % 3 == 0:
println("fizz")
case _ where i % 5 == 0:
println("buzz")
default:
println(i)
}
}
```