Answer
FizzBuzz in Java
Rules:
- ✓Print Fizz for multiples of 3
- ✓Print Buzz for multiples of 5
- ✓Print FizzBuzz for multiples of both 3 and 5
- ✓Otherwise print the number
Basic Solution
Java
public static void fizzBuzz(int n) {
for (int i = 1; i <= n; i++) {
if (i % 3 == 0 && i % 5 == 0) {
System.out.println("FizzBuzz");
} else if (i % 3 == 0) {
System.out.println("Fizz");
} else if (i % 5 == 0) {
System.out.println("Buzz");
} else {
System.out.println(i);
}
}
}
fizzBuzz(20);
// 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz
Return as List (Testable)
Java
public static List<String> fizzBuzzList(int n) {
List<String> result = new ArrayList<>();
for (int i = 1; i <= n; i++) {
String word = "";
if (i % 3 == 0) word += "Fizz";
if (i % 5 == 0) word += "Buzz";
result.add(word.isEmpty() ? String.valueOf(i) : word);
}
return result;
}
System.out.println(fizzBuzzList(15));
// [1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz]
Java 8 Stream Solution
Java
List<String> result = IntStream.rangeClosed(1, 20)
.mapToObj(i -> {
if (i % 15 == 0) return "FizzBuzz";
if (i % 3 == 0) return "Fizz";
if (i % 5 == 0) return "Buzz";
return String.valueOf(i);
})
.collect(Collectors.toList());
Extensible Solution (Easy to add new rules)
Java
// Use a map of divisor → word
public static String fizzBuzzFor(int n) {
Map<Integer, String> rules = new LinkedHashMap<>();
rules.put(3, "Fizz");
rules.put(5, "Buzz");
// rules.put(7, "Bazz"); // easy to extend!
StringBuilder result = new StringBuilder();
for (Map.Entry<Integer, String> rule : rules.entrySet()) {
if (n % rule.getKey() == 0) {
result.append(rule.getValue());
}
}
return result.length() > 0 ? result.toString() : String.valueOf(n);
}
Test Cases
Java
@Test
public void testFizzBuzz() {
List<String> result = fizzBuzzList(15);
assertEquals("1", result.get(0)); // 1 → number
assertEquals("Fizz", result.get(2)); // 3 → Fizz
assertEquals("Buzz", result.get(4)); // 5 → Buzz
assertEquals("Fizz", result.get(5)); // 6 → Fizz
assertEquals("FizzBuzz", result.get(14)); // 15 → FizzBuzz
}
