Java入門<1>
こんにちは。yufinです。
今日は久しぶりのプログラミングです。
いまJavaを勉強中です。
参考書はこちら
- 作者: 中山清喬,国本大悟
- 出版社/メーカー: インプレス
- 発売日: 2014/08/07
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る
内容は、ある会社の先輩が、新人2人にJavaを教えていく。というものです。
新人2人の疑問点は、読者の視点と一致することもよくあり、
とても分かりやすい内容となっています。
現在8章まで読みすすめたところなのですが、
場合分けについて、「あ、これいいな」って思うところがありました。
章末の練習問題は以下のような内容でした。
「聖職者は「祈る」という行動を取ることができ、自分のMPを回復できます。回復量は祈った秒数にランダムで0~2ポイントの補正を加えた量です。ただし、最大MPよりも回復することはありません。
そこで、引数に「祈る秒数」を指定し、戻り値として「実際に回復したMPの量」を返すメソッドを作成しなさい。」
私の初めの回答は
System.out.println(this.name+"は、祈った。"); int add_mp=new Random().nextInt(3)+sec; int tmp_mp=this.mp+add_mp; int bef_mp=this.mp; if(tmp_mp>this.max_mp) { this.mp=this.max_mp; return this.max_mp-bef_mp; }else { return add_mp; }
でした。
MP最大値を超えたときの処理はif文を使っています。
しかし、模範解答は以下のとおりでした。
System.out.println(this.name+"は、祈った。"); int add_mp=new Random().nextInt(3)+sec; int recActual=Math.min(this.max_mp-this.mp,add_mp); this.mp+=recActual; System.out.println("MPが"+recActual+"回復した。");
とてもシンプルです。
そして、場合分けに必須な条件式がない分、バグが入り込む余地も少なくなるように感じました。
returnも1か所のみというのも良いですね。
嬉しかったので、久しぶりのプログラミングでした。