Javaの勉強で力試しとなる問題がFizzBuzz問題です。
このFizzBuzz問題ではプログラミング初心者が、Javaでifやwhileを理解しているか確認することができます。
今回は、そんなFizzBuzz問題についてJavaでの解説をしていきます!
最初は大変かもしれませんが、ともに頑張っていきましょう!
記事の信頼性:未経験からIT業界の受託会社へ転職に成功。高校教諭から転職後もJavaの勉強を続けている「しう」がjavaでFizzBuzz問題をわかりやすく伝えています。
FizzBuzzとは

FizzBuzz問題は有名なプログラミングの問題の1つです。
Javaに限らずプログラミング経験の有無を見極めるために使われることがあります。
wikipedeaには以下のように書かれています。
FizzBuzz問題
このゲームをコンピュータ画面に表示させるプログラムとして作成させることで、コードが書けないプログラマ志願者を見分ける手法をジェフ・アトウッドがFizzBuzz問題 (FizzBuzz Question) として提唱した。
wikipedia
具体的には
- 1から50までに数字を出力する
- 3の倍数の時には、代わりに「Fizz」と出力する
- 5の倍数の時には、代わりに「Buzz」と出力する
- 3の倍数かつ5の倍数の時には、代わりに「FizzBuzz」と出力する(最優先)
という問題です。
「しう」がIT企業に入社後のJavaのスクール研修でもこのFizzBuzz問題を扱いました。
プログラミング経験者にはお馴染みの問題と言えるでしょう。
FizzBuzzを判定するプログラム【Java】

JavaでのFizzBuzzを判定するプログラムを見ていきましょう。
public class Fizzbuzz {
public static void main(String[] args) {
for (int i = 1; i < 51; i++) {
if (i % (3 * 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);
}
}
}
}
一番よく見かけるJavaでの書き方はこの方法になります。
JavaでFizzBuzzを判定するプログラム【解説】

JavaでのFizzBuzzを判定するプログラムの解説をしていきます。
Javaでの条件分岐を考える時には優先順位を考えます。
今回は
- 1から50までの数字を出力する
- 3の倍数かつ5の倍数の時には、代わりに「FizzBuzz」と出力する
- 3の倍数の倍数の時には、代わりに「Fizz」と出力する
- 5の倍数の時には、代わりに「Buzz」と出力する
つまり、②の15の倍数の時には「Fizz」でも「Buzz」でもなく「FizzBuzz」が優先されます。
そのため
if (i % (3 * 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);
}
というように i%(3 * 5) == 0 の判定が最初に来ます。
後は、iが1から50まで繰り返して終了です。
ちなみに、IT企業の業務(Java)では保守性を高めるため3や5の数字をそのまま使うことはしません。
現場でJavaのコードを書く場合
public class Fizzbuzz {
public static void main(String[] args) {
private final int NUM3 = 3;
private final int NUM5 = 5;
private final int MULTINUM = NUM3 * NUM5;
というように、最初に定数の宣言をして利用することが多いです。
また、プログラムの動きは同じですが、個人的にはこちらのJavaのコードの書き方が好きです。
public class Fizzbuzz {
public static void main(String[] args) {
for (int i = 1; i < 51; i++) {
StringBuilder str = new StringBuilder();
if (i % 3 == 0) {
str.append("Fizz");
}
if (i % 5 == 0) {
str.append("Buzz");
}
if(str.length() == 0) {
str.append(i);
}
System.out.println(str);
}
}
}
可読性の高い条件分岐の書き方については、こちらのブログで紹介している「リーダブルコード」でも勉強できます。

FizzBuzzの練習問題【Java】

次の4つの条件を満たすプログラムをJavaで作成してください。
- 1から100までに数字を出力する
- 7の倍数の時には、代わりに「Fizz」と出力する
- 11の倍数の時には、代わりに「Buzz」と出力する
- 7の倍数かつ11の倍数の時には、代わりに「FizzBuzz」と出力する(最優先)
このFizzBuz問題の答えは最後に記載しています。
まとめ
いかがでしたか?
今回は、JavaでFizzBuzz問題の解説をしました。
論理的思考力を鍛えるためにも、良い問題ですね。
Javaでの書き方も色んな方法があるので、自分なりに試してみてくださいね。
FizzBuzzの練習問題【Javaでの答え】
public class Fizzbuzz {
public static void main(String[] args) {
for (int i = 1; i < 101; i++) {
if (i % (7 * 11) == 0) {
System.out.println("fizzbuzz");
} else if (i % 7 == 0) {
System.out.println("fizz");
} else if (i % 11 == 0) {
System.out.println("buzz");
} else {
System.out.println(i);
}
}
}
}
☟あわせて読みたい 「しう」のオススメブログ



コメント