Menor valor Vetor

6 respostas
G

Alguem pode me dar uma ajuda como eu faço para retornar o elemento de menor valor do campo idade dentre os elementos do vetor passado via parâmetro.

6 Respostas

I
public int getMenorValor(int [] vetor ){
        int menorIdade = vetor [0];
        for(int idade : vetor ){
            if(menorIdade > idade){
                menorIdade = idade;
            }
        }
        
        return menorIdade;
        
    }

Se uma array é assim, porem indico uma que de uma olhada em List ou Collection

I

Esqueci um detalhe o metodo pode lançar um erro de ArrayIndexOutOfBoundsException caso o array esteja vazio

leo_amorim

Tente tratar o vetor fora por exemplo

no método principal ficaria
public static void main(String[] args) {
		int[] idades = new int[] {50,45,99,35,42,18 }; // vetor de idades
		int menorIdade = retornaMenorIdade(idades);
		
		if(menorIdade < 1){
			System.out.println("Não há menor idade");
		}else{
			System.out.println("A menor idade é: "+menorIdade);
		}
}
e a função seria assim.
public static int retornaMenorIdade(int[] idades) {
		int aux = 999; // idade fictícia

		for (int menor : idades) {
			if (menor < aux) {
				aux = menor;
			}
		}
		if (aux == 999)
			return 0; //idade não informada
		return aux;
}
yorgan

Não é uma boa prática determinar uma idade fictícia, isso ocasionalmente pode gerar problemas.
Eu faria algo +/- assim:

public static int retornaMenorIdade(int[] idades) {
	    int aux = -1; //idade invalida
	    if(idades != null && idades.length > 0) {   
	        aux = idades[0];
	        for (int menor : idades) {
	        	if (menor < aux) {
	        		aux = menor;
	        	}
	        }
	    }
	    return aux;
	}

[]´s

Daniel

leo_amorim

Beleza concordo, porém é necessário a verificação de idades negativas que não podem existir certo. Eu adicionaria mais uma clausula dentro do laço que se encontrar uma idade < 0 continue o laço e pule aquela idade, pois do contrario irá listar uma idade negativa;

:smiley:

yorgan

Verdade, o loop não está validando isso, mas não concorda que esse tipo de validação deve ser feita no momento em que a idade é informada?
Pois se for feita em qualquer outro momento, como nesse método, provavelmente essa validação terá de ser feita em vários lugares ao invés de apenas um.

[]s

Daniel

Criado 4 de agosto de 2009
Ultima resposta 5 de ago. de 2009
Respostas 6
Participantes 4