estou criando um programa e no algoritmo eu preciso calcular o menor elemento de uma lista de valores e, se possível, fazer com que retorne a posição desse menor elemento. Eu testei alguns exemplos e em alguns o código calculou certinho, mas em outros, ele retornou o maior elemento! Alguém poderia me ajudar?
package testes;
public class Teste_menor_elemento {
public static void main(String[] args) {
double[] lista = {15.5, 6.0, 0.0, 7.0, 13.0};
int min = 0;
for (int i = 0; i < lista.length; i++) {
for (int j = 0; j < lista.length; j++) {
if (lista[j] < lista[i] || lista[j] == lista[i]) {
break;
} else {
min = i;
}
}
}
System.out.println(lista[min]);
}
}
Eu testei este código para algumas sequências e deu certo, porém com esta aqui (e outras) não tá retornando o menor elemento. Eu sei que tem coisa errada quando (vi isso quando debuguei) mas não sei bem como consertar isso.
Na verificação do if, sempre vai cair no break, porque você está comparando valores iguais em posições iguais
if (lista[j] < lista[i])
//qual o valor de j e de i aqui?
//é como se voce perguntasse se 0.0 é menor que 0.0
tente colocar o i fora do for, atribua a ele valor 1 inicialmente, assim o if vai fazer verificação em posições diferentes, no caso, o 15.5 com o 6.0, o 6.0 com 0.0 etc