我正在进行矩阵转置,下面的代码适用于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();
}
}
}
答案 0 :(得分: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
}
答案 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并显示抛出异常的行,则总是更有帮助。