FizzBuzz問題を解いてみた

FizzBuzz問題を解いてみた。
言語はJava。思いつくままに書いてみた。
所要時間はどのくらいだろう?30分はかかってないが、10分切っていたかは微妙。
約4ヵ月間の勉強の成果はどんなもんか。

  1. コード
  2. 解答例
  3. 所感

コード

自分で考えたのは以下。

もっと簡略に書けるんだろうなあ。割り切れるかどうかの判定とか。
後、int型以上の値を入力した場合を考えてなかった。
引数が0や負、実数の場合とか。考えるとどんどん出てくる。

良く見なくても、コメントの日本語がおかしい!これはひどい

class FizzBuzz{
  //FizzBuzzアルゴリズム
  //2012/08/13
  public static void main(String[] args){
    //正常処理
    if(args.length == 1){
      //引数の型をチェック
      boolean result = NumCheck(args[0]);
      //正常処理
      if(result){
        int arg = Integer.parseInt(args[0]);
        for(int i = 1; i <= arg; 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);
          }
        }
      //引数がStringの場合
      }else{
        System.out.println("整数を引数に入力してください");
      }
    //引数が1つ以外の場合
    }else{
      System.out.println("整数値の引数を1つ入力してください。");
    }
  }
  
  //引数が文字列か数値であるかを判断するメソッド
  static boolean NumCheck(String num){
    try{
      int n = Integer.parseInt(num);
      return true;
    }catch(NumberFormatException e){
      return false;
    }
  }
}

解答例

javaで解いてる人たちの見てたら、三項演算子ってのを使うと短く書けるっぽい。
三項演算子は知らなかったから、勉強になった!
後は問題が1から100を出力するのがデフォなのか。

所感

1年後とか忘れたころに再度挑戦してみたい。
その時には、短く読みやすいコードが書けると良いな。
パールやシェルで挑戦するのもいいかも。