我正在努力创造这个游戏https://en.wikipedia.org/wiki/Conway然而,每当我尝试使用printBoard方法时,我都会遇到以下错误
线程“main”java中出现异常。lang.ArrayIndexOutOfBoundsException:索引5超出长度5的界限。
我怎样才能解决这个问题?谢谢
public class Board {
final int[][] board;
final int width;
final int height;
public Board(int width, int height) {
this.width = width;
this.height = height;
this.board = new int[width][height];
}
public void printBoard() {
System.out.println("---");
for (int i = 0; i < height; i++) {
String line = "|";
for (int j = 0; j < width; j++) {
if (this.board[i][j] == 0) {
line += ".";
} else {
line += "*";
}
}
line += "|";
System.out.println(line);
}
System.out.println("---\n");
}
public int countAliveNeighbours(int x, int y) {
int count = 0;
count+=this.board[x-1][y-1];
count+=this.board[x][y-1];
count+=this.board[x+1][y-1];
count+=this.board[x+1][y];
count+=this.board[x+1][y+1];
count+=this.board[x][y+1];
count+=this.board[x-1][y+1];
count+=this.board[x-1][y];
return count;
}
public void setAlive(int x, int y) {
this.board[x][y] = 1;
}
public void setDead(int x, int y) {
this.board[x][y] = 0;
}
public void setState(int x, int y) {
if(this.board[x][y] == 1) {
if(countAliveNeighbours(x,y) > 2) {
setDead(x,y);
} else if (countAliveNeighbours(x, y) == 2 || countAliveNeighbours(x, y) == 3) {
setAlive(x,y);
} else if (countAliveNeighbours(x,y) > 3) {
setDead(x,y);
}
} else {
if(countAliveNeighbours(x,y) == 3) {
setAlive(x,y);
}
}
}
public void checkState() {
for(int i=0;i<height;i++) {
for(int j=0;j<width;j++) {
setState(height, width);
}
}
}
public static void main(String[] args) {
Board board = new Board(8,5);
board.setAlive(2,2);
board.setAlive(3,2);
board.setAlive(4,2);
board.printBoard();
}
}
董事会初始化是必要的
this.board = new int[width][height];
做到:-
this.board = new int[height][width];
或者改变你用宽度迭代高度的循环。
在此输入图像描述 这是我的代码,我试图解决它5个小时,但我没有得到什么问题,任何人都可以帮助。我也检查了资源,但代码与源代码相同,但它没有运行。
我有一个方法,我输入一个包含4个对象的数组,它创建一个新的对象数组,复制之前的4个对象,然后再向数组中添加一个。但我一直有例外。
目前,我得到了以下代码的错误。错误是索引4超出了长度4的范围。基本上,我想做的是返回第一个索引,其中数据没有按升序排序。如果对数据进行了排序,该函数将返回数组的长度。例如{10,20,90,5,70}将返回3(90) 我使用的测试用例如下: 任何帮助或线索都将不胜感激。
更新:原来我不得不再次导出一个SVG,并把它放在我文件的数据文件夹中。 我再次面临一个编码问题。抱歉,如果格式不正确,我还需要改进我的编码问题的措辞方式。 ArrayIndexOutOfBoundsException:索引30超出长度30的界限意味着什么?我已经试着自己去查了,但似乎找不到它的意思。 起初,当我添加svg时,代码正常工作,然后我再次添加了同样的文件,也正常工作(Eye2、pupil
我对编码还是个新手,所以请耐心听我说,我只是在尝试一些方法来洗牌一个数组,以便最终在我用Java创建的纸牌游戏中洗牌。我知道索引5超出了长度5的界限,但令我困惑的是错误并不总是弹出。有时我试着运行我的代码,它工作得很好,而另一些时候,即使我在运行代码期间没有更改任何内容,我也会出现错误。 我不知道如何改变有缺陷的线条,任何建议都欢迎!***我尝试更改字符串中的字母数,但错误随之改变,即“索引6 o
我不明白为什么会发生这个错误。m1.length和m1[0].length打印行和列的正确长度。我给出了以下投入: 然后发生了错误