越界搜索二维数组

时间:2014-02-07 13:16:23

标签: java arrays search multidimensional-array

我试图通过一个数组(17行和26列)搜索一个整数并打印该整数的索引。为了便于测试,我设置了我搜索到0的整数,并且所有数组值都保留为默认值(0),所以我应该看到我的代码完成时打印的每个索引运行。

行正确打印,但当columnIncrement>时抛出一个越界异常。 16.

有人知道我做错了吗?任何帮助是极大的赞赏!

private static void search(int[][] arrayofArrays, int num) {

    for(int rowIncrement = 0; rowIncrement < arrayofArrays.length; rowIncrement++) {
        for (int columnIncrement = 0; columnIncrement < arrayofArrays[columnIncrement].length; columnIncrement++) {
            if (arrayofArrays[rowIncrement][columnIncrement] == num) {
                System.out.println("The integer you are looking for is in " + rowIncrement + "-" + columnIncrement);
            }
        }
    }

    return;
}

public static void main(String[] args) {
    int[][] data = new int[17][26];
    int integer = 0;

    search(data, integer); 
}

4 个答案:

答案 0 :(得分:1)

在第二个arrayofArrays[columnIncrement].length循环中将arrayofArrays[rowIncrement].length更改为for

答案 1 :(得分:1)

你的第二个for循环需要有arrayofArrays[rowIncrement].length

答案 2 :(得分:1)

在你的内循环中,你应该有:columnIncrement < arrayofArrays[rowIncrement].length

答案 3 :(得分:1)

你的for循环应该是

 for(int rowIncrement = 0; rowIncrement < arrayofArrays.length; rowIncrement++) {
    for (int columnIncrement = 0; columnIncrement < arrayofArrays[rowIncrement].length; columnIncrement++) {
        if (arrayofArrays[rowIncrement][columnIncrement] == num) {
            System.out.println("The integer you are looking for is in " + rowIncrement + "-" + columnIncrement);
        }
    }
}  

在第二个for循环中,您检查的是arrayOfArrays [columnIncrement]而不是arrayOfArrays [rowIncrement],这就是造成问题的原因