我创建了一个方法,需要检查多维数组的范围,并确保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
也许对于第一个错误我需要获取数组值而不是比较数组?不确定..
答案 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
第二,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
或在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;
}