LoginSignup
7
6

More than 5 years have passed since last update.

ifとかswitchを使わずにFizzBuzz

Last updated at Posted at 2014-04-27

まず、if文を使った場合、例えばこんな感じ。

/**
 * FizzBuzz
 */
public class FizzBuzz {
    final String F = "Fizz";
    final String B = "Buzz";
    public void fizzBuzz(int number) {
        for (int i = 1; i < number + 1; i++) {
            boolean fizz = (i % 3 == 0);
            boolean buzz = (i % 5 == 0);
            if (fizz && buzz) {
                output(F);
            } else if (fizz) {
                output(B);
            } else if (buzz) {
                output(F + B);
            } else {
                output(Integer.toString(i));
            }
        }
    }
    private void output(String str) {
        System.out.println(str);
    }
    public static void main(String[] args) {
        new FizzBuzz().fizzBuzz(Integer.parseInt(args[0]));
    }
}

System.out.println が4回も出てくるのでリファクタリングしてみた。
次に、if文のところを ?: で置き換えてみたもの。

/**
 * FizzBuzz 2
 * if文使わないバージョン
 */
public class FizzBuzz2 {
    final String F = "Fizz";
    final String B = "Buzz";
    public void fizzBuzz(int number) {
        for (int i = 1; i < number + 1; i++) {
            boolean fizz = (i % 3 == 0);
            boolean buzz = (i % 5 == 0);
            System.out.println(
                fizz && buzz ? F + B
                : fizz ? F
                : buzz ? B
                : Integer.toString(i)
                );
        }
    }
    public static void main(String[] args) {
        new FizzBuzz2().fizzBuzz(Integer.parseInt(args[0]));
    }
}

インデント工夫してみたけど、やはり伝わりづらいか。。。
Shift キーを押す回数を減らせるので、コーディングは100倍楽に感じる。

7
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6