gpt4 book ai didi

java - 二维数组上的 ArrayIndexOutOfBoundsException 错误

转载 作者:行者123 更新时间:2023-12-01 16:46:53 26 4
gpt4 key购买 nike

我想检查与我的 two-dimensional 的每个位置相邻的第 8 个位置数组,但第一个给了我错误,因为那里没有位置。

如何避免该错误?我以前也遇到过同样的情况,也解决不了。

我想做的事情的示例图片:

enter image description here

我的方法代码:

 private static void evoluciona(char[][] tauler2, char[][] tauler22) {

for(int i = 0; i < files; i++) {
for(int j = 0; j < columnes; j++) {
tauler2[i][j] = tauler[i][j];
}
}

for(int i = 0; i < files; i++) {
for(int j = 0; j < columnes; j++) {
if(tauler2[i][j] == 'x') {

int cont = 0;

if(tauler2[i-1][j] == '*') {
cont++;
}

if(tauler2[i-1][j-1] == '*') {
cont++;
}

if(tauler2[i-1][j+1] == '*') {
cont++;
}

if(tauler2[i][j-1] == '*') {
cont++;
}

if(tauler2[i+1][j-1] == '*') {
cont++;
}

if(tauler2[i+1][j] == '*') {
cont++;
}

if(tauler2[i+1][j+1] == '*') {
cont++;
}

if(tauler2[i][j+1] == '*') {
cont++;
}

if(cont == 2 || cont == 3) {
tauler2[i][j] = '*';
}
}

else if(tauler2[i][j] == '*') {

int cont = 0;

if(tauler2[i-1][j] == '*') {
cont++;
}

if(tauler2[i-1][j-1] == '*') {
cont++;
}

if(tauler2[i-1][j+1] == '*') {
cont++;
}

if(tauler2[i][j-1] == '*') {
cont++;
}

if(tauler2[i+1][j-1] == '*') {
cont++;
}

if(tauler2[i+1][j] == '*') {
cont++;
}

if(tauler2[i+1][j+1] == '*') {
cont++;
}

if(tauler2[i][j+1] == '*') {
cont++;
}

if(cont == 2 || cont == 3) {
tauler2[i][j] = '*';
}

else {
tauler2[i][j] = 'x';
}
}
}
}
}

最佳答案

圣诞节前后,我在编写自己的小型扫雷克隆版时遇到了类似的问题。

我最终得到了一个知道其邻居的字段类。

class Field {
char value;
Field[] neighbors;
}

每当初始化新板时,这些“连接”都会被预编译。

class FieldManager {

void initializeFields(int firstDimension, int secondDimension) {
fields = new Field[firstDimension][secondDimension];
for(int i = 0; i < fields.length; i++) {
for(int j = 0; j < fields[i].length; j++) {
fields[i][j] = new Field();
fields[i][j].neighbors = neighborsFor(i, j);
}
}
}

private Field[] neighborsFor(int iIn, int jIn) {
List<Field> result = new ArrayList<>();
for(int i = iIn - 1; i <= iIn + 1; i++) {
for(int j = jIn - 1; j < jIn + 1; j++)
// do some range checks and fill result
}
}
return result.toArray(new Field[result.size()]);
}

Field[][] fields;
}

除了数组之外,您还可以使用Collection,例如ArrayList。特别是较新的 java 版本有很多围绕这些接口(interface)构建的有用实用程序。

关于java - 二维数组上的 ArrayIndexOutOfBoundsException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48753765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com