2013-09-21 2 views
-3

Я выполняю преобразование матрицы, ниже код работал для 2x2 Transpose matrix, но он не будет работать в матрице транспонирования 2x3, любезно помогите мне, какую ошибку я сделал.ArrayIndexOutofBoundsException в 2x3 Transpose matrix

Исключение:

Исключение в потоке "основного" 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

никогда не копировать и вставлять код: P – FaddishWorm

+0

-1 - сообщение об ошибке указывает прямо на строку нарушения. Вы должны были идентифицировать эту строку в своем вопросе. –

+0

@FaddishWorm - Нет, никто никогда этого не делает. Или, по крайней мере, леди Лавлейс не ... очень. –

ответ

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 
} 
0

Теперь мой код работы, я забыл изменить Conditon в последний цикл

for (int i = 0; i <col; i++) { 
for (int j = 0; j<row ; j++) { 
System.out.print(transpose[i][j]+"\t"); 
} 
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"); 
    } 
} 

Конечно, это всегда более полезно, если вы добавляете StackTrace и шоу, которое является линия, которая бросает исключение.