2011年07月11日

An initialization bug...

皆さんこんばんは!

今日も暑いですね〜・・・。
でも今日は一日中研究室でずっと研究してたeXpresserです。

やることが決まっているっていうことは本当に嬉しいことで、それが「やりたいこと」であればなおさらです。

今日、研究で使っているプログラムを修正しようと思ったわけなんですよ。
修正することを簡単に言うと、今までプログラムのソース側で設定してた定数を、コマンドライン引数から設定するという修正。

プログラムの中でも比較的外側の修正だったので、たいしたことないかな〜?と思ったら、とんでもなかったです。


今までは、
public static final int X_STATES = 100;
public static final int Y_STATES = 100;

などのように記述してたのを、
private static int X_STATES;
private static int Y_STATES;

public Constructor(Parameter para){
  X_STATES = para.x;
  Y_STATES = para.y;
}

のように変更するだけなんですけど、ここに落とし穴が。

実は前のプログラムで、
public static double LENGTH =
    Math.sqrt(X_STATES * X_STATES + Y_STATES * Y_STATES);

のように"X_STATES"や"Y_STATES"をモロに使って定義してた定数がありまして、それのせいでプログラムがうまく走ってくれず、1時間近く悩んでしまいました。

そりゃあ、値を代入してからじゃないと計算してくれませんしね・・・。
コンパイルエラーも出なかったので、「計算式書き換えちゃったかな?」と思ってしばらくプログラムの一番大事な計算式とにらめっこ。


プログラミングって、こうなると深みに嵌るんですよね。

まあ、1個勉強になったので全然いいんですが・・・。
posted by eXpresser at 18:51| Comment(0) | TrackBack(0) | プログラミング関係 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。