Qual o erro no codigo da Matriz transposta?

A matriz transposta de:

        4 5 6 7 8
        2 3 4 5 6

        Será:

        4 2
        5 3
        6 4
        7 5
        8 6

MATRIZ NORMAL
4 5 6 7 8
2 3 4 5 6

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 2
at matrizes.Main.main(Main.java:706)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 36 segundos)

int matrizA[][] = new int [mA][nA]; // Matriz A

int[][] transposta=new int[matrizA[0].length][matrizA.length];;

    System.out.println("\n\n");

	System.out.println("MATRIZ NORMAL ");
	for(int i=0; i<matrizA.length; i++)
	{
		for(int j=0; j<matrizA[i].length; j++)
		{
			System.out.print(matrizA[i][j]+"\t");
		}
		System.out.println();
	}
	for(int linha=0;linha<matrizA.length;linha++){
        for(int coluna=0;coluna<matrizA[linha].length;coluna++){
            if(coluna > linha || coluna < linha)
            	transposta[linha][coluna]=matrizA[coluna][linha];
            if(coluna==linha)
            	transposta[linha][coluna]=matrizA[linha][coluna];
        }
    }
	System.out.println();
	System.out.println("MATRIZ TRANSPOSTA ");
	for(int i=0; i<transposta.length; i++)
	{
		for(int j=0; j<transposta[i].length; j++)
		{
			System.out.print(transposta[i][j]+"\t");
		}
		System.out.println();
	}

		System.out.println("\n\n");

Você precisa inverter as coisas.
O erro lançado e´devido ao fato de você tentar ler a posição 2 de um vetor que só tem 2 posições (0 e 1).

Seria altera essa parte?

for(int linha=0;linha<matrizA.length;linha++){
for(int coluna=0;coluna<matrizA[linha].length;coluna++){
if(coluna > linha || coluna < linha)
transposta[linha][coluna]=matrizA[coluna][linha];
if(coluna==linha)
transposta[linha][coluna]=matrizA[linha][coluna];
}

Veja, você tem a matriz original e a transposta.
A transposta tem o mesmo número de linhas que a original tem de colunas e o mesmo número de colunas que a original tem de linhas.
É só ajeitar isso que fica tudo ok.

3x3 Funciona legal

MATRIZ NORMAL
1 2 3
4 5 6
7 8 9

MATRIZ TRANSPOSTA
1 4 7
2 5 8
3 6 9

Só não funciona com 2x5.

Sim, pois o número de linhas é igual ao número de colunas.
A questão é você conseguir sincronizar.

Para transpor uma matriz basta apenas inverter o for na hora da impressão…

matrizA=2x5
matrizAt=5x2

Olhando é fácil e simples na pratica. :frowning:

Resposta mole, mole para você.

public class MatrizTransposta {
	public static void main(String[] args) {
		int matrizA[][] = new int[2][5];
		int matrizB[][] = new int[5][2];
		
		matrizA[0][0] = 0;
		matrizA[0][1] = 1;
		matrizA[0][2] = 2;
		matrizA[0][3] = 3;
		matrizA[0][4] = 4;
		matrizA[1][0] = 5;
		matrizA[1][1] = 6;
		matrizA[1][2] = 7;
		matrizA[1][3] = 8;
		matrizA[1][4] = 9;
		
		System.out.println("Matriz A");
		for(int i = 0; i < matrizA.length; i++) {
			for(int j = 0; j < matrizA[i].length; j++) {
				System.out.print(matrizA[i][j] + "\t");
			}
			System.out.println("");
		}
		
		for(int i = 0; i < matrizA.length; i++) {
			for(int j = 0; j < matrizA[i].length; j++) {
				matrizB[j][i] = matrizA[i][j];
			}
		}
		
		System.out.println("");
		System.out.println("");
		System.out.println("Matriz B");
		
		for(int i = 0; i < matrizB.length; i++) {
			for(int j = 0; j < matrizB[i].length; j++) {
				System.out.print(matrizB[i][j] + "\t");
			}
			System.out.println("");
		}
	}
}