Java:数组索引超出范围异常

kub*_*baj 0 java multidimensional-array indexoutofboundsexception

当我编译时我得到了错误java.lang.ArrayIndexOutOfBoundsException:-1.我检查了3次代码,没有发现错误,我也没有在数组结束后写.

Random nahoda = new Random();    int[][] minPol = new int[5][5];
int[][] cisPol = new int[5][5];
for(int i = 0;i<5;i++)
{
for(int j=0;j<5;j++)
{
minPol[i][j] = nahoda.nextInt(2);
cisPol[i][j] = 0;
}
}
for(int i = 0;i<5;i++)
{
    for(int j=0;j<5;j++)
    {
        if(minPol[i][j]!=0)
        {
        if(i != 0 || j != 0 || i != 4 || j != 4)
        {
            cisPol[i+1][j+1]++;
            cisPol[i+1][j-1]++;
            cisPol[i-1][j+1]++;
            cisPol[i-1][j-1]++;
            cisPol[i+1][j]++;
            cisPol[i-1][j]++;
            cisPol[i][j+1]++;
            cisPol[i][j-1]++;
        }
        else
        {
            if(i == 0)
            {
                if(j == 0)
                {
                    cisPol[i+1][j+1]++;
                    cisPol[i][j+1]++;
                    cisPol[i+1][j]++;
                }
                else if(j == 4)
                {
                    cisPol[i+1][j]++;
                    cisPol[i+1][j-1]++;
                    cisPol[i][j-1]++;
                }
                else
                {
                    cisPol[i+1][j+1]++;
                    cisPol[i][j+1]++;
                    cisPol[i+1][j]++;
                    cisPol[i+1][j-1]++;
                    cisPol[i][j-1]++;
                }
            }
            else if(i == 4)
            {
                if(j == 0)
                {
                    cisPol[i-1][j+1]++;
                    cisPol[i-1][j]++;
                    cisPol[i][j+1]++;
                }
                else if(j == 4)
                {
                    cisPol[i-1][j-1]++;
                    cisPol[i-1][j]++;
                    cisPol[i][j-1]++;
                }
                else
                {
                    cisPol[i][j-1]++;
                    cisPol[i][j+1]++;
                    cisPol[i-1][j+1]++;
                    cisPol[i-1][j]++;
                    cisPol[i-1][j-1]++;
                }
            }
        }            
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我是Java的初学者,感谢您的提示

Jon*_*eet 7

看看这个条件:

if(i != 0 || j != 0 || i != 4 || j != 4)
Run Code Online (Sandbox Code Playgroud)

这不符合你的要求.它永远是真的,因为i不能同时等于0和4.

因此,当j0为0 时,你最终会进入这里:

cisPol[i+1][j-1]++;
Run Code Online (Sandbox Code Playgroud)

砰.