2个简单的数组错误?

时间:2013-11-14 03:52:35

标签: java arrays

我创建了一个方法,需要检查多维数组的范围,并确保2D数组中的每个值都小于或等于数组的长度。

public static boolean method(int[][] solution){
        //check rows for 1-N
        for (int i=0; i < solution.length; i++){
                if (solution[i] > solution.length)
                return false; //check rows
            }

        //check columns for 1 - N
        for (int j = 0; j<solution.length; j++){
            //get a column in the one dimensional array
            int[] column = new int[solution.length];
            for (int i=0; i < solution.length; i++){
                column[i] = solution[i][j];
            }
            if (column[i] > solution.length)
                return false; //check columns

        }
    return true;
    }

但是,我收到的错误如下:

Program.java:99: error: bad operand types for binary operator '>'
                                if (solution[i] > solution.length)
                                                ^
  first type:  int[]
  second type: int
Program.java:110: error: cannot find symbol
                        if (column[i] > solution.length)
                                   ^
  symbol:   variable i
  location: class Program
2 errors

也许对于第一个错误我需要获取数组值而不是比较数组?不确定..

4 个答案:

答案 0 :(得分:4)

首先,您无法将数组与int值进行比较

if (solution[i] > solution.length) // solution is a 2-d array and thus solution[i] is a 1-d array
// which can't be compared with an int value

第二,ifor循环中声明,因此在其范围之外不可见。

for (int i=0; i < solution.length; i++){
    column[i] = solution[i][j];
} // scope of i is over here
if (column[i] > solution.length) // that's why you can't access `i` here
    return false;

您需要使用j或在i之前声明for,以便您可以在它之后使用它,或者可能将if移到内部for循环(这似乎也是解决问题的正确方法)。

答案 1 :(得分:1)

您在i循环之外使用for,也许您想要使用j

答案 2 :(得分:0)

因为,solution是一个二维数组。

int[][] solution;

并且要完成这项工作,

if(solution[][] > solution.length)

答案 3 :(得分:0)

我想这么多代码就足够了

public static boolean method(int[][] solution) {
    // check rows for 1-N
    for (int i = 0; i < solution.length; i++) {
        for (int j = 0; j < solution[i].length; i++) {
            if (solution[i][j] > solution.length)
                return false; // check rows
        }
    }

    return true;
}