Boa Noite, olivercld.
Vamos lá, tentar explicar:
public static void imprime(int mat[][]){
for (int l = 0; l < ord; l++){ // for para linha
for (int c = 0; c < ord; c++) { // for para coluna
System.out.printf("%3s |", mat[l][c]);
}
System.out.println("");
}
}
No código acima está o método responsável por imprimir cada matriz, criei ele para não ficar repetindo código várias vezes. Esse código precisa ser chamado para funcionar e é isso que faço no código abaixo:
System.out.println("\nMATRIZ A:");
imprime(matA);
System.out.println("\nMATRIZ B:");
imprime(matB);
System.out.println("\nDIFERENCA A - B:");
imprime(matC);
No bloco acima, eu apenas chamo o método responsável por imprimir a Matriz, só se ele for chamado, que ele funciona, essa é a forma de usá-lo de fato, ele só precisa que seja passada a Matriz como argumento. Veja que o chamei 3 vezes, uma vez para cada Matriz (matA, matB e matC). Não é para armazenar a matriz não. A armazenagem das matrizes foi feita nessa parte do código:
for (int l = 0; l < ord; l++) { // for para linha
for (int c = 0; c < ord; c++) { // for para coluna
// Lê valores de 1 a 20 para as Matrizes
matA[l][c] = aleatorio.nextInt(20) + 1;
matB[l][c] = aleatorio.nextInt(20) + 1;
// Subtração da Matriz A pela B
matC[l][c] = matA[l][c] - matB[l][c];
}
}
Agora quanto a printf, qual erro que está dando?
Aqui funciona normalmente, qual a versão do java instalado na tua máquina?
printf passou a existir no java a partir da versão 1.5.
Explicando:
System.out.printf("%3s |", mat[l][c]);
O %3s formata a string para comprimento igual a 3, mesmo que a variável tenha menos que 3, a string vai ser preenchida com espaços a esquerda, ou seja, o valor da variável vai se alinhar a direita.
Veja como ficou aqui:
