Não estou conseguindo imprimi a matriz abaixo de forma ordenada(crescente):
packageestruturadedados;importjavax.swing.JOptionPane;publicclassordenaMatriz{//inicio do metodo construtorpublicstaticvoidmain(Stringargs[]){intnum[][]=newint[4][4];inttroca[][]=newint[4][4];//int trocou[][] = new int[4][4];Stringn;//inicio do laço para guardar valoresfor(inti=0;i<4;i++){for(intj=0;j<4;j++){n=JOptionPane.showInputDialog("Digite um numero inteiro");num[i][j]=Integer.parseInt(n);}}System.out.println("Numeros Digitados pelo Usuario!");//inicio do laço para exibir valoresfor(inti=0;i<4;i++){for(intj=0;j<4;j++){System.out.printf("%5d",num[i][j]);}System.out.println();}System.out.println();System.out.println("Numeros em ordem crescente:");//inicio do laço para ordenar valores. Mas não consigo colocar de forma ordenada//ele imprime o foi digitado pelo usuário, abaixo está o laco que era para fazer a ordenaçãofor(inti=0;i<4;i++){for(intj=0;j<4;j++){if(num[i][j]>num[i][j]+1){troca[i][j]=num[i][j];num[i][j]=(num[i][j]+1);//System.out.println(num[i][j]);//trocou[i][j] = troca[i][j];}System.out.printf("%5d",num[i][j]);}System.out.println();}}//fim do metodo construtor}//fim da classe
No último for, você esta tentando fazer uma ordenação por flutuação (Bubble Sort), em uma matriz bidimensional, eu não penso em tentar algo assim.
Neste último for, ao invés de tentar ordenar, coloque os elementos em um vetor comum e o ordene.
Depois, percorra a matriz bidimensional novamente e atribua os valores do vetor a cada coordenada da matriz.
Como o vetor é unidimensional, você vai precisar incrementar uma variável, para percorrer o vetor.
Seria o equivalente a um gráfico tridimensional.
Coordenadas, x e y, para a matriz e z++, para o vetor, sendo z incrementado dentro do 2º for.
J
jairodione
Ola addller!
Vamos ver se entendi corretamente. Devo criar um vetor com 16 posições e nele pedir para o usuário digitar os número Inteiros! Depois faço a ordenação em outro vetor, e depois de ordenado faço a matriz num[4][4] recebendo os valores do vetor ordenado! Seria isto?
A
Solucao aceita
anon62916717
Nestes termos não seria necessário de outro vetor para ordenar.
O vetor receberia os dados, você o ordenaria com Arrays.sort(vetorUnico).
Depois sobrescreveria a matriz.
É até mais fácil.
Consegui solucionar baseado em sua ajuda! Ficou da seguinte forma:
//inicio do metodo construtorpublicstaticvoidmain(Stringargs[]){intx;Stringnum;intnumeros[]=newint[16];//inicio do laço para receber valores digitados pelo usuariofor(inti=0;i<16;i++){num=JOptionPane.showInputDialog(“DigiteumNúmeroInteiro!”);numeros[i]=Integer.parseInt(num);}//fim do laço para receber valores digitados pelo usuario//inicio do laço para mostrar os numeros digitados pelo usuarioSystem.out.println(“NúmerosDigitadosPeloUsuario!”);for(inti=0;i<16;i++){if(i==4||i==8||i==12||i==16)System.out.println();System.out.printf("%5d",numeros[i]);}//fim do laço para mostrar os numeros digitados pelo usuario//inicio do laço para ordenar os numeros digitados pelo usuariofor(inti=1;i<numeros.length;i++){for(intj=numeros.length-1;j>=i;j–){if(numeros[j-1]>numeros[j]){x=numeros[j-1];numeros[j-1]=numeros[j];numeros[j]=x;}}}//fim do laço para ordenar os numeros digitados pelo usuarioSystem.out.println();//inicio do laço para mostrar os numeros digitados pelo usuario ordenadoSystem.out.println(“NúmerosDigitadosPeloUsuarioemOrdemCrescente!”);for(inti=0;i<16;i++){if(i==4||i==8||i==12||i==16)System.out.println();System.out.printf("%5d",numeros[i]);}//fim do laço para mostrar os numeros digitados pelo usuario ordenado}//fim do metodo construtor