Сначала проверьте делимость на 15, затем отдельно на 3 и 5; результат кодируйте явно, например UTF-8. При отсутствии делимости бросьте IllegalArgumentException.
Создание байтового массива по правилам FizzBuzz
Сначала проверьте делимость на 15, затем отдельно на 3 и 5; результат кодируйте явно, например UTF-8. При отсутствии делимости бросьте IllegalArgumentException.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Метод принимает целое число number и возвращает массив байтов, формируемый по следующим принципам:
- Если число делится на 3 — в массив добавляется строка
Fizz. - Если число делится на 5 — в массив добавляется строка
Buzz. - Если число кратно одновременно 3 и 5 — в массив добавляется строка
FizzBuzz. - Если число не кратно ни 3, ни 5 — метод бросает
IllegalArgumentException. Решение должно сопровождаться набором юнит‑тестов.
public class FizzBuzzGenerator {
public byte[] generate(int number) {
throw new RuntimeException("Not implemented yet");
}
}
Ответ
Сначала проверьте делимость на 15, затем отдельно на 3 и 5; результат кодируйте явно, например UTF-8. При отсутствии делимости бросьте IllegalArgumentException.
public byte[] generate(int number) {
String result;
if (number % 15 == 0) result = "FizzBuzz";
else if (number % 3 == 0) result = "Fizz";
else if (number % 5 == 0) result = "Buzz";
else throw new IllegalArgumentException("Not divisible by 3 or 5");
return result.getBytes(java.nio.charset.StandardCharsets.UTF_8);
}
Пример проверок JUnit 5 внутри тестового метода:
var g = new FizzBuzzGenerator();
assertArrayEquals("Fizz".getBytes(StandardCharsets.UTF_8), g.generate(3));
assertArrayEquals("Buzz".getBytes(StandardCharsets.UTF_8), g.generate(5));
assertArrayEquals("FizzBuzz".getBytes(StandardCharsets.UTF_8), g.generate(15));
assertArrayEquals("FizzBuzz".getBytes(StandardCharsets.UTF_8), g.generate(0));
assertArrayEquals("Fizz".getBytes(StandardCharsets.UTF_8), g.generate(-3));
assertThrows(IllegalArgumentException.class, () -> g.generate(7));
По заданному условию ноль и отрицательные кратные допустимы: ограничения на положительность нет.