1

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

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

4 回答 4

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

其次,i在循环中声明了for,因此它在其范围之外是不可见的。

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或声明,以便您可以在它之后使用它,或者可能移动内部循环内部(这似乎也是解决您的问题的正确方法)。iforiffor

于 2013-11-14T03:53:45.307 回答
1

i在循环外使用for,也许您想j改用。

于 2013-11-14T03:54:47.463 回答
0

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

int[][] solution;

为了完成这项工作,它应该是,

if(solution[][] > solution.length)
于 2013-11-14T03:56:09.087 回答
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;
}
于 2013-11-14T03:58:58.993 回答