1

オブジェクトの配列を想像してください。

int MAX_ALLOWED = 5;
Object [] object = new Object [MAX_ALLOWED];

オブジェクトが、それぞれの位置を持つゲームのユニットであるとします。ユーザーが「spawn unit」というボタンを押すと、コードは次のようになります。

 unit [] = new Object (location);

ご覧のとおり、[ _ ]には識別子がないため、これが問題を引き起こしています。ここに何を入力すればよいかわかりません。0 を入力すると、オブジェクトを作成するたびにオブジェクトのメモリが 0 で上書きされます。

特定のオブジェクトまたはユニットにアクセスするとき。

for (int i = 0; i <= unit.length; i++)
    {
    if (location = unit [i].get_Location)
    {
        move (unit [i]);
        }
    }

しかし、これを行うと、0 より後の要素にアクセスすると、null ポインター例外が発生します。

4

1 に答える 1

0

もののリストを格納するという一般的な問題のために、配列は避けるべきです。代わりに、コレクションははるかにプログラマーにとって使いやすく、それでもかなり高速です。

あなたの場合、配列を使用することは、最後に使用された要素のインデックスを保持し、サイズなどを管理する必要があることを意味します.aを使用するList方が簡単です:

List<Unit> units = new ArrayList<Unit>();

次に使用するには、次のようにします。

units.add(new Unit());

サイズを制限したい場合は、追加する前に:

if (units.size() == MAX_ALLOWED) {
    // do something else
}

要素を反復処理するには:

for (Unit unit : units) {
    // do something with unit
}

リストの良いところは、必要に応じてサイズが大きくなることです。

于 2013-09-07T06:02:23.643 に答える