packageestruturadedados;importjavax.swing.JOptionPane;/** * * @author Jairo */publicclassExercicio8rQ5{privatestaticfinalintMAX_ALEATORIO=100;//inicio do metodo construtorpublicstaticvoidmain(Stringargs[]){intnum[][]=newint[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();}}//fim do metodo construtor}//fim da classe
Como faço para colocar em ordem crescente os elementos da Matriz?
Fiz uns ajustes desnecessários na codificação para facilitar o teste.
Como não tive certeza sobre o tipo de ordenação, testei duas, uma em linha e outra geral.
A instrução que faz a ordenação é Arrays.sort(vetor), entretanto a disposição varia de acordo com o tipo de ordenação.
importjava.util.Arrays;publicclassOrdenance{publicstaticvoidmain(Stringargs[]){intnum[][]=newint[4][4];//Gerando os valores da matriz de forma aleatóriafor(inti=0;i<num.length;i++){for(intj=0;j<num[i].length;j++){num[i][j]=(int)(Math.random()*1000);}}imprimirLinhas("Matriz gerada\n",num);//realizando a ordenação por linhasArrays.stream(num).forEach(linha->Arrays.sort(linha));imprimirLinhas("\nMatriz com linhas ordenadas\n",num);imprimirLinhas("\nOrdenação formal\n",ordenacaoFormal(num));}//imprime as linhas de um arrayBidimensionalprivatestaticvoidimprimirLinhas(Stringtexto,int[][]matriz){System.out.print(texto);Arrays.stream(matriz).forEach(linha->formato("[%4d]",linha));}//formatando a impressão das linhasprivatestaticvoidformato(Stringformato,int[]linha){Arrays.stream(linha).forEach(num->System.out.print(String.format(formato,num)));System.out.println("");}//Ordenação considerando a disposição sequencial das linhas considerando todos os elementosprivatestaticint[][]ordenacaoFormal(int[][]matriz){//int[] valores = new int[matriz.length * matriz[0].length];// <- se usar esta instrução e a matriz for do tipo[0][0] da ArrayIndexOutOfBoundsExceptionint[]valores=newint[Arrays.stream(matriz).mapToInt(linha->linha.length).sum()];intcont=0;for(int[]linha:matriz){for(intcoluna=0;coluna<linha.length;coluna++){valores[cont++]=linha[coluna];}}Arrays.sort(valores);cont=0;for(int[]linha:matriz){for(intcoluna=0;coluna<linha.length;coluna++){linha[coluna]=valores[cont++];}}returnmatriz;}}
J
jairodione
Obrigado addller, era isto mesmo que esta procurando para solucionar o problema!