这可能是一个愚蠢的问题,但是我在编程方面还是很新的。为了提高我的技能,我尝试生成0和1的某种“映射”。首先,我生成一个零矩阵。然后在随机点上,在该矩阵中添加1。围绕这一点,我想生成一个与孤岛1同心的孤岛。
问题是,如果我将索引减1,则在28-30行中一切正常,但是如果我将索引加1(31-33行),则得到ArrayIndexOutOfBoundsException。我不知道为什么会这样。
public class map {
int mapsizex;
int mapsizey;
int map[][] = null;
public map (int mapsizex, int mapsizey) {
this.mapsizex = mapsizex;
this.mapsizey = mapsizey;
map = new int[mapsizex][mapsizey];
for(int i=0; i < map.length; i++) {
for(int j=0; j < map[i].length; j++) {
map[i][j] = 0;
}
}
}
public void rand_map (int r_nr, int r_size) {
Random ran = new Random();
for(int n=0; n < r_nr; n++) {
map[(int)(ran.nextInt(mapsizex))-r_size][(int)(ran.nextInt(mapsizey))-r_size] = 1;
for(int i=0; i < mapsizex; i++) {
for(int j=0; j < mapsizey; j++) {
if(map[i][j] > 0) {
for(int d=0; d<r_size; d++) {
map[i-d][j] = 1;
map[i-d][j-d] = 1;
map[i][j-d] = 1;
map[i+d][j] = 1;
map[i+d][j+d] = 1;
map[i][j+d] = 1;
}
}
}
}
}
}
public void printmap () {
for(int i=0; i < map.length; i++) {
for(int j=0; j < map[i].length; j++) {
System.out.print(map[i][j]);
}
System.out.println();
}
}
}