0
public boolean horizontal(Populate a, int[][][] ar, int row, int col, int dep)
    {
        ar = new int[6][6][6];
        a.pop(ar);
        for(dep=0;dep<6;dep++)
        {
            for(col=0;col<6;col++)
            {
                for(int count=0;count<5;count++)
                {    
                    int num = ar[row][col][dep];
                    int num1 = ar[row+1][col][dep];
                    if(num==num1)
                    {
                        count1++;
                    }
                    row++;

                }   

            }

        }
        if(count1==5)
            return true;
        else
            return false;
    }

这段代码应该扫描一个 3d 数组以查找 6 的水平行(如老虎机),如果扫描则返回 true,否则返回 false。它编译但是当我尝试运行它时得到一个 ArrayOutOfBoundsException:6 。

for(int count=0;count<5;count++)

即使我尝试将上面的这一行更改为下面的内容(就像只是降低循环的距离),它仍然超出范围。

 for(int count=0;count<2;count++)

任何建议或解决方案表示赞赏。谢谢你。

如果有帮助的话,这就是我调用该方法的地方。

    public class runCheck
    {
        public static void main(String[] args)
        {
            Populate ch = new Populate();
            int[][][] ar = new int[6][6][6];
            ch.pop(ar);
            ArrayList al = new ArrayList();
            scan a = new scan();
            boolean abool = a.horizontal(ch,ar,0,0,0);
            if(abool==true)
                al.add(true);
        }
    } 
4

1 回答 1

0

由于我不知道您如何调用此方法的完整代码,因此我假设问题出在这些行之一

int num = ar[row][col][dep]; int num1 = ar[row+1][col][dep];

行++;

变量 row 可能会超过 5,从而引发数组越界异常。

于 2013-04-03T02:08:14.347 回答