在Java 2D ArrayList中转置值

时间:2011-03-04 06:25:42

标签: java arrays multidimensional-array transpose

晚上好,

我正在尝试编写一个创建并返回2D数组的方法,其中每个位置的元素与参数数组的镜像位置中的元素相同。不幸的是,无论我在方法调用中输入什么数字,我的编译器都会出现“越界”错误。以下是我的计划。告诉我哪里出错了!谢谢!

public static int[][] transpose(int [][] a) {
int r = a.length;
int c = a[r].length;
int [][] t = new int[c][r];
  for(int i = 0; i < r; ++i) {
     for(int j = 0; j < c; ++j) {
   t[j][i] = a[i][j];
   }
  }
return t;
 }
}

3 个答案:

答案 0 :(得分:2)

java中的数组基于0,将您对 c 的分配更改为:

int c = a[r - 1].length;

答案 1 :(得分:1)

@Suraj是正确的,但你必须假设2D数组是矩形的,在这种情况下,将第3行更改为更高效:

int c = a[0].length;

@Kris答案文本是正确的但是代码示例是错误的行。

请注意,此错误是“雅虎答案”中发布的“答案”的再现:http://answers.yahoo.com/question/index?qid=20080121204551AAn62RO

答案 2 :(得分:0)

你的问题在于第二行:a[r].length返回列数,但数组的索引是0.你应该相应地调整:

int r = a.length - 1;