Menor valor dentro da matriz - JAVA

Olá pessoal, estou com dificuldade em montar o código que pegue o menor número da matriz e imprima o numero e sua posição.

Só consegui pegar o maior número. Alguém pode me ajudar com o menor numero?

Meu código:

int m[][] = new int[6][3];
int numMenor = 0;
int numMaior = 0;
int pL = 0;
int pC = 0;
Scanner sc = new Scanner(System.in);

System.out.println(“Digite os valores da matriz:”);

for(int linha = 0 ; linha < 6 ; linha++){
for(int coluna = 0; coluna < 3; coluna ++){
System.out.print(“Posição " + “(” + (linha+1) + “,” + (coluna+1) + “)” + " = “);
m[linha][coluna] = sc.nextInt();
if(m[linha][coluna] > numMaior){
numMaior = m [linha][coluna];
pL = linha;
pC = coluna;
}
}
}
System.out.println(“Maior = " + numMaior + " na posição” +”(”+ (pL+1) + “,” + (pC+1) + “)”);
System.out.println("Menor = " + numMenor);

a diferença para fazer o menor número vai ser só na hora de inicializar o numMenor, porque se você só tiver números maiores que 0, então ele nunca irá trocar de número. Você pode por dentro dele o maior numero do “int” que é 2.147.483.647. depois no mesmo for do maior numero você só troca o sinal de maior pelo sinal de menor e substitui dentro do if o nome das variáveis que vão pegar os valores do menor. Lembrando que você vai ter que ter um índice de linha e coluna diferente para o maior e para o menor.

Deve resolver sua causa esse teste para pegar o primeiro item.

Muito obrigada pessoal. Acabei fazendo um else if após o if e acabou ficando assim:

m[linha][coluna] = sc.nextInt();
if(m[linha][coluna] > numMaior){
numMaior = m [linha][coluna];
pL = linha;
pC = coluna;
}
else if (m[linha][coluna]< m[0][0]){
numMenor = m[linha][coluna];
mL = linha;
mC = coluna;
}
}
}
System.out.println(“Maior = " + numMaior + " na posição” +"("+ (pL+1) + “,” + (pC+1) + “)”);
System.out.println(“Menor = " + numMenor + " na posição” +"("+ (mL+1) + “,” + (mC+1) + “)”);

Assim vai dar errado para pegar o menor valor, você não está comparando com o valor menor e sim com o primeiro valor inserido. Se você tiver como primeiro valor o número 5, depois tiver um com número 3 e no final um com número 4, ele vai informar que o menor valor é 4. a solução seria trocar o m[0][0] por numMenor, lembrando de inicializar esse numMenor com o maior numero que um int pode ter que foi o que eu disse em um post anterior.

1 curtida

Muito obrigada! Fiz desse jeito e deu certo.