Olá Pessoal!, fiz código:
package estruturadedados;
import javax.swing.JOptionPane;
/**
*
* @author Jairo
*/
public class Exercicio8rQ5 {
private static final int MAX_ALEATORIO = 100;
//inicio do metodo construtor
public static void main(String args[]) {
int num[][] = new int[4][4];
String n;
//inicio do laço para guardar valores
for (int i = 0; i < 4; i++) {
for (int j = 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 valores
for (int i = 0; i < 4; i++) {
for (int j = 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.
import java.util.Arrays;
public class Ordenance {
public static void main(String args[]) {
int num[][] = new int[4][4];
//Gerando os valores da matriz de forma aleatória
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length; j++) {
num[i][j] = (int) (Math.random() * 1000);
}
}
imprimirLinhas("Matriz gerada\n", num);
//realizando a ordenação por linhas
Arrays.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 arrayBidimensional
private static void imprimirLinhas(String texto, int[][] matriz) {
System.out.print(texto);
Arrays.stream(matriz).forEach(linha -> formato("[%4d]", linha));
}
//formatando a impressão das linhas
private static void formato(String formato, 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 elementos
private static int[][] 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 ArrayIndexOutOfBoundsException
int[] valores = new int[Arrays.stream(matriz).mapToInt(linha -> linha.length).sum()];
int cont = 0;
for (int[] linha : matriz) {
for (int coluna = 0; coluna < linha.length; coluna++) {
valores[cont++] = linha[coluna];
}
}
Arrays.sort(valores);
cont = 0;
for (int[] linha : matriz) {
for (int coluna = 0; coluna < linha.length; coluna++) {
linha[coluna] = valores[cont++];
}
}
return matriz;
}
}

Obrigado addller, era isto mesmo que esta procurando para solucionar o problema!