MENU
👇しうが厳選・おすすめのブログ!
しう
【テニス好きブロガー】 
テニス、読書が好きです。IT企業で学んだこともブログに書いています。高校教諭(テニス部顧問)→IT企業。テニス歴12年。人生をより有意義なものにしたいと思い、ブログを書き始めました。Twitterもしています。
アーカイブ

JavaでFizzBuzz!!!【元教師が解説します】

Java FizzBuzz 問題

Javaの勉強で力試しとなる問題がFizzBuzz問題です。

 

このFizzBuzz問題ではプログラミング初心者が、Javaでifやwhileを理解しているか確認することができます。

今回は、そんなFizzBuzz問題についてJavaでの解説をしていきます!

 

初めてFizzBuzz問題を解くという人は、一度自分なりに考えることをおすすめします。
自分なりに考えて、解説を読んだ方がより身につくものが多いからです。

 

最初は大変かもしれませんが、ともに頑張っていきましょう!

 

記事の信頼性:未経験からIT業界の受託会社へ転職に成功。高校教諭から転職後もJavaの勉強を続けている「しう」がjavaでFizzBuzz問題をわかりやすく伝えています。

目次

FizzBuzzとは

Java FizzBuzz 問題

FizzBuzz問題は有名なプログラミングの問題の1つです。

 

Javaに限らずプログラミング経験の有無を見極めるために使われることがあります。

 

wikipedeaには以下のように書かれています。

FizzBuzz問題

このゲームをコンピュータ画面に表示させるプログラムとして作成させることで、コードが書けないプログラマ志願者を見分ける手法をジェフ・アトウッドがFizzBuzz問題 (FizzBuzz Question) として提唱した。

wikipedia

 

具体的には

  1. 1から50までに数字を出力する
  2. 3の倍数の時には、代わりに「Fizz」と出力する
  3. 5の倍数の時には、代わりに「Buzz」と出力する
  4. 3の倍数かつ5の倍数の時には、代わりに「FizzBuzz」と出力する(最優先)

という問題です。

 

「しう」がIT企業に入社後のJavaのスクール研修でもこのFizzBuzz問題を扱いました。

プログラミング経験者にはお馴染みの問題と言えるでしょう。

FizzBuzzを判定するプログラム【Java】

Java FizzBuzz 問題

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でのFizzBuzzを判定するプログラムの解説をしていきます。

 

Javaでの条件分岐を考える時には優先順位を考えます。

 

今回は

  1. 1から50までの数字を出力する
  2. 3の倍数かつ5の倍数の時には、代わりに「FizzBuzz」と出力する
  3. 3の倍数の倍数の時には、代わりに「Fizz」と出力する
  4. 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);            
        }
    }
}

 

可読性の高い条件分岐の書き方については、こちらのブログで紹介している「リーダブルコード」でも勉強できます。

あわせて読みたい
【Java初心者向け】必読の書籍・エンジニア志望なら見ておきたい! プログラミング初心者がJavaを勉強するときに、何を見て勉強するでしょうか?   学習サイト、書籍、Youtubeなどの動画。 今の時代、学び方の選択肢はとても多いです。 ...

FizzBuzzの練習問題【Java】

Java FizzBuzz 問題

次の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);
            }
        }
    }
}

 

☟あわせて読みたい 「しう」のオススメブログ

あわせて読みたい
【独学だけで厳しいと感じたら】無料のプログラミングスクール3選 「しう」はプログラミングの勉強を独学で始めました。 最初はなかなか難しく感じ、配列の利用方法を完ぺきに身につけることさえ、時間がかかりました。   大学のテニス...
プログラミング(Java・Kotlin)のお...
Java Silver SE11 まとめ記事 | プログラミング(Java・Kotlin)のお悩み解決ラボ! IT業界への転職を考えていたり、すでにIT業界で働いている人は資格の取得を考えることも多いです。   Java に関する資格で、有名なものの一つがJava Silver SE11です!  ...
あわせて読みたい
IT企業での研修・転職・体験談 まとめ記事 IT企業に転職をして、約6か月が経ちました。筆者の「しう」はこの6か月間、IT企業での研修・転職・体験談を毎月書いてきました。今までIT企業で働いたことがない人は、...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

【しう】
Java Engineer| 最近はKotlin| 「テニスとJava(プログラミング)のお悩み解決ラボ」運営者| プログラミング・開発現場の学びを主に発信|【経歴】受託系IT企業➪自社開発企業| ∮保有資格∮ : Java Silver,Oracle SQL Silver,基本情報,TOEIC 750,簿記3級

コメント

コメントする

CAPTCHA


目次