-3

我正在做矩阵转置,下面的代码适用于 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();
}
}    
}
4

3 回答 3

1

转置矩阵是,所以打印时int[col][row]必须切换i和。j

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
}
于 2013-09-21T12:33:45.303 回答
0

问题在于印刷。

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

只需更改for限制

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

当然,如果您添加堆栈跟踪并显示引发异常的行总是更有帮助。

于 2013-09-21T12:34:38.200 回答
0

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

for (int i = 0; i <col; i++) {
for (int j = 0; j<row ; j++) {
System.out.print(transpose[i][j]+"\t");
}
于 2013-09-21T12:34:15.350 回答