プロが教える店舗&オフィスのセキュリティ対策術

 以下のようにしてjavaファイルを作成したのですが、eclipse(3.2)では、「配列定数は、イニシャライザーにおいてのみ使用可能です。」というメッセージが表示されてしまいます。下線は、mapの値全体({{1,1,以下)に表示されています。これに対策するにはどうすればよいのでしょうか?

package map;
import...(略)

public class MapData extends Setting{
int[][] map;
int HotelRoom = 1;

public MapData(int mapname){
switch(mapname){
case HotelRoom:
int[][] map = new int[15][15];

map = { {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} };
}
}
}
 mapフィールドの宣言をコンストラクタ内で行うと、エラーは出ないのですが、このフィールドは別のクラスでも使うので、それではダメなのです・・・。
 情報が少なくて恐縮なのですが、必要に応じて後から補足させていただきますので・・・。
 よろしくお願いいたします。

A 回答 (2件)

map = { {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},


{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} };

って使い方はできません。

int map[][] = { {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} };

として使います。

なので、
package map;
import...(略)

public class MapData extends Setting{
private int[][] bufMap = { {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};

public int[][] map;
public int HotelRoom = 1;

public MapData(int mapname){
switch(mapname){
case HotelRoom:
map = bufMap;
}
}
}

ってのでどうでしょう?
    • good
    • 1
この回答へのお礼

 うまくいきました。わかりにくい質問文にもかかわらず、わかりやすいご回答ありがとうございました。

お礼日時:2007/07/08 13:03

>このフィールドは別のクラスでも使うので、それではダメなのです・・・。


ここの意味がよくわかりません。

class MapData にフィールドとして宣言されている int[][] map と
MapData のコンストラクタで宣言されているローカル変数 int[][] map は別物なんですよね?

そしてクラス変数を別のクラスでも使うとは?
    • good
    • 0
この回答へのお礼

 ご回答ありがとうございます。
 すみません、コンストラクタ内のint[][] mapは消し忘れでした。
 別のクラスで使うというのは、別のクラスに継承して使うということです。(別にclass Map extends MapData{...というのがあるのです)
 色々わかりにくくてすみませんです・・・。

お礼日時:2007/07/08 12:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています