为什么我会收到这个错误??我正在尝试顺时针旋转 90 度,并想找到转置,然后反转每一行。
static int transpose(int [][]arr,int n,int m){
int [][]transposeArr = new int[n][m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
transposeArr[i][j] = arr[j][i];
}
}
return transposeArr;
}
答案 0 :(得分:1)
因为你的方法返回一个 int[][]
因为你写了 return transposeArr;
,而 transposeArr
是一个变量,在这个方法的第一行声明,类型为 int[][]
,但是你的方法被声明为只返回一个 int
,因为你是这样定义的(static int transpose...
- 第一个 int
是返回类型)。
int[][]
不是 int
。
这就像你有一个柠檬水摊(你“声明”你归还“柠檬水”),有人走过来,要一杯饮料,你递给他们一杯咖啡。编译器不会让你这样做,你必须先更新你的摊位的广告。
很可能你打算写static int[][] transpose(int[][] arr, int n, int m) {.... }
答案 1 :(得分:1)
static int transpose(int [][]arr,int n,int m)
考虑这一行,这里您将返回类型指定为 int
,因此该函数期望返回一个 int 但您返回的是 transposeArr
类型为 int[][]
所以为了返回transposeArr,你可以把行改成
static int[][] transpose(int [][]arr,int n,int m)