javaのある条件分岐の記述でif(level==0]{a=3;b=8;c=9;d=6;}if(level==1]{a=1;b=9;c=6;d=1;}if(level==2]{というふうにlevel==20まで続くとしたら、leve[0]=new Level(3,8,9,6);leve[1]=new Level(1,9,6,1);level2]=などのようにインスタンス配列を作り、繰り返し処理でループカウンタ20未満で順次levelをif文で調べていき、一致すればa=leve[i].a;b=leve[i].b;c=leve[i].c;d=leve[i].d;beak;などと記述した方がわかりやすく楽じゃないでしょうか?でも不一致のインスタンスについては結果としては無駄になりますが、いかがでしょう?

Java

1件の回答

回答を書く

1222126

2026-05-19 23:45

+ フォロー

御懸念のとおり、level 判定の都度 20 個インスタンスを作っていると、19 個は丸々無駄になってしまいます。そんな場合は、配列をクラスの static フィールドに定義してしまえば、クラスロード時に1度だけ 20 個作り、以降ずっと使いまわしていくことができるので、無駄にならずに済みます。



また、C 言語での流儀を受け継ぎ (?)、この手のデータ (テーブル) は2重配列で定義することが多い印象です。結果として、以下のようなスタイルになっているプラグラムを結構見かけます。



public class Clazz {



    private static final int[][] table = {

        {3, 8, 9, 6},

        {1, 9, 6, 1},

        ......

    };



    public void method() {



        int level = ...



        int a = table[level][0];

        int b = table[level][1];

        int c = table[level][2];

        int d = table[level][3];



        ......

    }

}



ちなみに、



\u0026gt; インスタンスの作成の時間やメモリ確保の無駄より、プログラム作成面の分かりやすさや、コンパクトさの方を優先すべきでしょうか?



分かりやすさ重視に1票入れときます。

パフォーマンスについては、それが問題になった時点で考えればいいかな、と思います。

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有