to tentando fazer o método da matriz transposta porem não estou achando pq esta dando IndexOutOfBounds, pra mim a lógica do for ta certa.
sera q a implementação ta errada?
Fala Pedro, vou responder a sua pergunta 2 e depois ler para ver se sei a pergunta 1 (sobre o código), ok? Você pediu matriz bidimensional “como String”… se você quis dizer “matriz bidimensional de Strings”, a resposta é a que segue, senão poderia ser mais específico? Não compreendi.
Matriz bidimensional de Strings:
String[][] matriz = new String[10][];
ou String[][] matriz = null;
E depois você preenche a matriz ou define o tamanho. Você só é obrigado a definir o tamanho da primeira matriz. Por quê?
Rápido adendo:
Porque assim você tem espaço para dez matrizes de Strings. Daí você vai alocar o espaço de cada matriz individualmente depois.
Se ficou confuso com o adendo, desconsidere-o
Guto_Magalhaes
Cara, tb nao vi problema. Pq nao tentar fazer um debug na classe? Com o debug vc vai executando linha a linha.
Pega uma IDE(eclipse por exemplo). Ai é so vc clicar na margem esquerda, exatamente na linha que vc quer começar o debug, ai é so executar a classe e quando chegar na linha marcada, vc ira executar e ver o codigo sendo executado ao mesmo tempo.
Falow
kinow
Por que acontece arrayOutOfBounds?
Se você rodar seu programa com uma matriz de 4 linhas por 3 colunas, não haverá problema, assim como matrizes quadradas.
Agora, se houver um número maior de colunas do que de linhas, dará estouro no array.
Você etm uma matriz[2][3]. A transposta dela tem que ser montada numa matriz [3][2]. Me corrija se estiver errado, mas você deveria montar uma matriz nova antes de retornar o método. Vou fazer um novo método e enviar, se alguém tiver outra solução ;).
Abraços.
P
pedrobadari
humm vlw ai
verdadi o problema era mesmo com este tipo de matriz…
no teste no papel fiz pra uma matriz quadrada e a que eu estava testando no programa era uma de 3 linhas por 4 colunas…
soh q to errando ou faltando alguma coisa ainda na classe da interface, não esta aparecendo os numeros e sim uns códigos estranho
[[I@422ede
publicclassInterfaceMatrizPedro{publicstaticvoidmain(Stringargs[]){MatrizPedroexecute=newMatrizPedro();int[][]matriz={{4,6,2},{12,9,3},{10,2,3}};System.out.println("A matriz original era a: "+matriz);System.out.println("A matriz transposta eh a: "+execute.matrizTransposta(matriz));}}
o println ta errado?? tentei fazer: System.out.printf("… %f",execute.matrizTransposta(matriz) ); tb não deu certo e nem o System.out.printf("… %d",execute.matrizTransposta(matriz) );
P
pedrobadari
ii acho q oq flei atras era bobagem… acho q vi um erro no codigo, eu posso mudar daquele jeito uma matriz q acabei de receber?? não teria que criar uma outra matriz e nela ir jogando os numeros na ordem certa??
olha como to pensando que é:
Um int é um tipo primitivo, um int[][] é um Objeto. Confuso? Isso cai na prova de SCJP. Por isso quando você manda imprimir sair algo estranho, é o endereço do objeto na memória que você está mandando imprimir. Para testar, pode fazer Object o = new Object(); e depois imprimir o objeto o. A saída será um código no mesmo formato.
O que você precisa implementar é um for dentro de outro for ;). Moleza se você implementou a opção de transpor a matriz.
Abraços.
L
lcquinhone
O post é antigo, mas alguém pode precisar, então tá aí:
importjava.util.Arrays;importjavax.swing.JOptionPane;publicclassMatrizTransposta{publicstaticvoidmain(String[]args){intm[][]={{1,2,3},{4,5,6},{7,8,9}};int[][]transposta=newint[m[0].length][m.length];;System.out.println("MATRIZ NORMAL ");for(inti=0;i<m.length;i++){for(intj=0;j<m[i].length;j++){System.out.print(m[i][j]+"\t");}System.out.println();}for(intlinha=0;linha<m.length;linha++){for(intcoluna=0;coluna<m[linha].length;coluna++){if(coluna>linha||coluna<linha)transposta[linha][coluna]=m[coluna][linha];if(coluna==linha)transposta[linha][coluna]=m[linha][coluna];}}System.out.println();System.out.println("MATRIZ TRANSPOSTA ");for(inti=0;i<transposta.length;i++){for(intj=0;j<transposta[i].length;j++){System.out.print(transposta[i][j]+"\t");}System.out.println();}}}
jpedroschmitz
Matriz transposta com Scanner
Segue abaixo um código para fazer uma matriz transposta: `
publicstaticvoidmain(String[]args){// Esse programa lê uma matriz bidimensional e transforma em um// transpostaScannerpergunta=newScanner(System.in);intn=3;int[][]matriz=newint[n][n];int[][]matrizT=newint[n][n];System.out.println("Matriz M[3][3]\n");for(intlinha=0;linha<n;linha++){for(intcoluna=0;coluna<n;coluna++){System.out.printf("Insira o elemento M[%d][%d]: ",linha+1,coluna+1);matriz[linha][coluna]=pergunta.nextInt();}}System.out.println("\nA Matriz original ficou: \n");for(intlinha=0;linha<n;linha++){for(intcoluna=0;coluna<n;coluna++){System.out.printf("\tM[%d][%d]: ",linha+1,coluna+1);System.out.printf("%d \t",matriz[linha][coluna]);}System.out.println();}for(intlinha=0;linha<n;linha++){for(intcoluna=0;coluna<n;coluna++){matrizT[linha][coluna]=matriz[coluna][linha];}}System.out.println("\n Matriz transposta: \n");for(intlinha=0;linha<n;linha++){for(intcoluna=0;coluna<n;coluna++){System.out.printf("\tM[%d][%d]: ",linha+1,coluna+1);System.out.printf("%d \t",matrizT[linha][coluna]);}System.out.println();}}
}`
A
anon62916717
Matriz transposta SEM scanner, XD.
package crisis;
import java.util.Arrays;
public class Crisis {
publicstaticvoidmain(String[]args){int[][]matriz={{1,2,3,4},{5,6,7,8}};for(int[]normal:matriz){System.out.println(Arrays.toString(normal));}System.out.println();for(int[]transposta:matrizTansposta(matriz)){System.out.println(Arrays.toString(transposta));}}privatestaticint[][]matrizTansposta(int[][]matriz){int[][]retorno=newint[matriz[0].length][matriz.length];//invertendo a linha com a colunafor(intlin=0;lin<retorno.length;lin++){for(intcol=0;col<retorno[lin].length;col++){retorno[lin][col]=matriz[col][lin];}}returnretorno;}