Java 检查2d数组中某个索引周围的索引的最佳方法

Java 检查2d数组中某个索引周围的索引的最佳方法,java,arrays,algorithm,2d,Java,Arrays,Algorithm,2d,我正在做一个我必须做的细菌生命游戏 基本上我有一个2d字符串数组,比如说20乘20 检查某个指数周围所有8个点的最佳方法是什么。假设每个索引代表一个细菌。对于每个细菌(索引),我必须检查该索引周围的8个点中是否有其他细菌,如果索引中有细菌,则仅用“*”和星号表示 检查每个指数周围的所有8个点的最佳方法是什么,因为根据某个指数周围的指数,我必须进行某些更改等等 我唯一想到的是用一堆if语句来检查所有8个点,我想知道是否有更好的方法来做到这一点 例: 第1行-www,第2行=哇,第3行-www 如果

我正在做一个我必须做的细菌生命游戏

基本上我有一个2d字符串数组,比如说20乘20

检查某个指数周围所有8个点的最佳方法是什么。假设每个索引代表一个细菌。对于每个细菌(索引),我必须检查该索引周围的8个点中是否有其他细菌,如果索引中有细菌,则仅用“*”和星号表示

检查每个指数周围的所有8个点的最佳方法是什么,因为根据某个指数周围的指数,我必须进行某些更改等等

我唯一想到的是用一堆if语句来检查所有8个点,我想知道是否有更好的方法来做到这一点

例: 第1行-www,第2行=哇,第3行-www

如果我在O索引处,那么检查某个字符串的所有索引点的最佳方法是什么

对不起,我不太擅长解释我的问题,英语不好


感谢您的帮助。

以下是我过去是如何做到这一点的:

for(int x = -1; x<=1; x++){
    if ( i+x < xLength && i+x >= 0){
        for(int y = -1; y<=1; y++){
            if(j+y < yLength && j+y >= 0){
                //logic goes here
            }
        }
    }
}
for(int x=-1;x=0){
对于(int y=-1;y=0){
//逻辑就在这里
}
}
}
}

我过去是如何做到这一点的:

for(int x = -1; x<=1; x++){
    if ( i+x < xLength && i+x >= 0){
        for(int y = -1; y<=1; y++){
            if(j+y < yLength && j+y >= 0){
                //logic goes here
            }
        }
    }
}
for(int x=-1;x=0){
对于(int y=-1;y=0){
//逻辑就在这里
}
}
}
}

所以你有这样的东西

char[][] table = new char[20][20]

for(int i = 0; i < 20; i++) {
    for(int j = 0; j < 20; j++) {
        int surroundingBacteria = 0;
        for(int x = max(i-1,0); x < min(20,i+1); x++) {
            for(int y = max(i-1,0); y < min(20,i+1); y++) {
                if(table[x][y] == '*') surroundingBacteria++;
            }
        }
        switch(surroundingBacteria) {
            // put your case logic here
        }
    }
}
char[]table=新字符[20][20]
对于(int i=0;i<20;i++){
对于(int j=0;j<20;j++){
周围细菌的int=0;
对于(int x=max(i-1,0);x
所以你有这样的东西

char[][] table = new char[20][20]

for(int i = 0; i < 20; i++) {
    for(int j = 0; j < 20; j++) {
        int surroundingBacteria = 0;
        for(int x = max(i-1,0); x < min(20,i+1); x++) {
            for(int y = max(i-1,0); y < min(20,i+1); y++) {
                if(table[x][y] == '*') surroundingBacteria++;
            }
        }
        switch(surroundingBacteria) {
            // put your case logic here
        }
    }
}
char[]table=新字符[20][20]
对于(int i=0;i<20;i++){
对于(int j=0;j<20;j++){
周围细菌的int=0;
对于(int x=max(i-1,0);x