memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

久しぶりにJava書いた。

RSSをチェックしていて今日のCodeZine脱 超初心者 Javaアルゴリズム問題集 第3回 という記事がありました。自宅で寝転がりながらカキカキ。久しぶりにJavaのプログラムを書きました。最近はPHPばかりで。。。(といってもプログラムをゴリゴリ作るチャンスは減っていますけどね)
この解答を見ると割り切れるときには正しい平均値が表示されますが、割り切れないと小数点以下が切り捨てられちゃいます。

//年齢平均値計算(オリジナル)
int avg = sum / n;

//年齢平均値計算(四捨五入に変更)
int avg = (int)(sum * 1.0 / n + 0.5);

で、とりあえず四捨五入しますね。この記事の本質ではありませんのでわざと省略したものと思います。最初はそれでいいんですよね。型以前に逐次処理や変数に値を仮置きして計算を進める考え方に慣れる方が大切だと思います。

余談ですが。。。後期から久々に1年生の演習科目を担当します。1年生の○クラスの皆さん、よろしく。夏休みの間にせっかく覚えたコードを忘れないように、ぜひ、上記の連載にチャレンジしてみてください。内容的にはアルゴリズムも入ってきますから2年生の科目になりますが、チャレンジしてみてください。

ちなみに、このCodeZineというサイトではJavaだけでなくプログラム開発に関するさまざまな情報を扱っています。先日、オープンキャンパスのネタを作るのに物理エンジン(PhysX)の解説記事におせわになりました。デモを改造してWiiリモコンのライブラリと結合して、結構遊べるものができました。(遊びたい方はぜひオープンキャンパスに来てください、自分で言うのも何ですが結構はまります)。

でも、久々に書くと、Integerクラスのくせに!?parseIntっていうメソッドも変だな。。。って感じました。私の違和感を例えて言うなら、整数君に「この文字列を整数にして返してね!」と言ったら「そんなんわかっとるわい!」と言われそうなわけです。なぜparseだけじゃダメなのか?引数の型に応じてオーバーロードでparseしたらとりあえずint型にしちゃえばよさげなものですが。C#ではint.Parse(string variable)でいけます。もちろんint以外にも他の型にも変換できるから区別するためにparseIntってしたんだと思うのですが。。。そのキッチリしているあたりがJavaらしいなぁ、と感じます。