在java中转置int[][]类型数组的一部分

在java中转置int[][]类型数组的一部分,java,arrays,iteration,nested-loops,transpose,Java,Arrays,Iteration,Nested Loops,Transpose,第一篇帖子因此提前为糟糕的表现道歉。我正在为我的java入门课程做一个项目,在这个项目中,我只需要转置较大数组的一部分。在这个特殊的例子中,我得到了这个数组: int[][]数组= {{1, 2, 3, 4},{11, 12, 13, 14, 15, 16},{21, 22, 23, 24},{31, 32, 33}}; 该方法接收输入数组rowStart、rowEnd、colStart、colEnd参数 例如,上面数组的输入:transpose(array,0,3,1,2)应该返回一个数组,看

第一篇帖子因此提前为糟糕的表现道歉。我正在为我的java入门课程做一个项目,在这个项目中,我只需要转置较大数组的一部分。在这个特殊的例子中,我得到了这个数组:

int[][]数组=
{{1, 2, 3, 4},{11, 12, 13, 14, 15, 16},{21, 22, 23, 24},{31, 32, 33}};

该方法接收输入数组rowStart、rowEnd、colStart、colEnd参数

例如,上面数组的输入:
transpose(array,0,3,1,2)
应该返回一个数组,看起来像
{2,12,22,32},{3,13,23,33}

我的直觉是使用一个嵌套循环,一个对列#进行索引,在该循环中对行#进行索引,然后将它们移动到输出数组中。我想这是可能的,但我有点麻烦。以下是我编写的代码以及上面示例的输出:

public static int[][] transpose(int[][] matrix, int rowStart, int rowEnd, int colStart, int colEnd) {
    int[][] newArray = new int[colEnd-colStart][rowEnd-rowStart];


    for (int i = colStart; i < colEnd; i ++ ){
      for(int j = rowStart; j < rowEnd; j ++){
        newArray[i-colStart][j-rowStart] = matrix[j][i];
      }
    }
   return newArray; 
  }
这是正确输出的一小部分

我对数组还是有点陌生,但我的直觉是,我要么把输出数组弄得太小,要么在错误的位置开始/结束索引

感谢阅读,非常感谢您的帮助

固定版本:

public static int[][] transpose(int[][] matrix, int rowStart, int rowEnd, int colStart, int colEnd) {
  int[][] newArray = new int[colEnd-colStart+1][rowEnd-rowStart+1];


    for (int i = colStart; i < colEnd+1; i ++ ){
      for(int j = rowStart; j < rowEnd+1; j ++){
        newArray[i-colStart][j-rowStart] = matrix[j][i];
      }
    }
   return newArray; 
public static int[][]转置(int[][]矩阵,int rowStart,int rowEnd,int colStart,int colEnd){
int[]newArray=newint[colEnd colStart+1][rowEnd rowStart+1];
for(int i=colStart;i
问题在于计数器的上限值:

i < colEnd
j < rowEnd
i
应包括该上限值:

i <= colEnd
OR 
i < colEnd + 1

i在我键入完整答案之前,请先查看新数组的维度,您正在执行colEnd colStart和rowEnd rowStart,根据您的示例,这两个数组分别为3x2。是否正确?谢谢!在遵循您的建议并将i&j停止条件设置为比我离开boun之前大1之后ds,但我还必须将我的输出数组的大小增加1。非常感谢您的帮助!!!另外,如果有人站在我的立场上,我将添加固定版本。
i <= colEnd
OR 
i < colEnd + 1