</>

Technology

Core Java

Difficulty

Beginner

Interview Question

What is the FizzBuzz problem? Write a Java solution.

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
}

Follow AutomateQA

Related Topics