2x3转置矩阵中的ArrayIndexOutofBoundsException

时间:2013-09-21 12:30:06

标签: java matrix

我正在进行矩阵转置,下面的代码适用于2x2转置矩阵,但它不能在2x3转置矩阵中工作,请帮助我做错了。

例外:

  

线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:2

package Sep20;

import java.util.Scanner;

public class TMatrix {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);
System.out.println("enter the No of rows ");
int row = in.nextInt();
System.out.println("Enter the No of coloumn");
int col = in.nextInt();
int first[][]=new int[row][col];
int transpose[][]=new int[col][row];

System.out.println("Enter the matrix");

for (int i = 0; i < row; i++) {
for (int j = 0; j <col; j++) {
first[i][j]= in.nextInt();

}
}
for (int i = 0; i <row; i++) {
for (int j = 0; j <col; j++) 
{
transpose[j][i]=first[i][j];
}
}
System.out.println("Transpose of entered matrix:-");

for (int i = 0; i <row; i++) {
for (int j = 0; j <col; j++) {
System.out.print(transpose[i][j]+"\t");
}
System.out.println();
}
}    
}

3 个答案:

答案 0 :(得分:1)

转置矩阵为int[col][row],因此您在打印时必须切换ij

for (int i = 0; i < row; i++) {
    for (int j = 0; j < col; j++) 
    {
        System.out.print(transpose[j][i]+"\t");
    }
    System.out.println(); // print each row on a new line
}

答案 1 :(得分:0)

现在我的代码工作了,我忘了改变最后一个for循环的条件

for (int i = 0; i <col; i++) {
for (int j = 0; j<row ; j++) {
System.out.print(transpose[i][j]+"\t");
}

答案 2 :(得分:0)

问题在于打印。

您正在通过切换索引正确转换3x2中的2x3,但您仍在尝试打印2x3矩阵。

只需更改for限制

即可
for (int i = 0; i <col; i++) {
    for (int j = 0; j <row; j++) {
        System.out.print(transpose[i][j]+"\t");
    }
}

当然,如果添加stacktrace并显示抛出异常的行,则总是更有帮助。