Media, maior e menor

Como eu faço a media, a maior e a menor temperatura desse array?

int menorTemperatura = temperaturas[0];
int maiorTemperatura = temperaturas[0];
int media = 0;

for(int i = 0; i < temperaturas.length; i++){
    if ( temperaturas[i] < menorTemperatura ){
    	menorTemperatura = temperaturas[i];
    }
    if( temperaturas[i] > maiorTemperatura ) {
    	maiorTemperatura = temperaturas[i];
    }
    media += temperaturas[i];
}
media = media / temperaturas.length;

Básicamente o algoritmo analisa se o proximo valor é maior que o anterior ou menor, caso cumpram com a condição substitui, e a media é a soma de todos os valores do array dividido por seu tamanho

nao entendi como isso fica no código, a lógica eu entendi


eu tenho q ter um método pra cada

public double media(Temperatura[] temps) {
	double media = 0;
	
	for(int i = 0; i < temps.length; i++){
	    media += temps[i];
	}
	
	media = media / temps.length;
	
	return media;
}

public double maior(Temperatura[] temps) {
	double maiorTemperatura = temps[0];

	for(int i = 0; i < temps.length; i++){
	    if( temps[i] > maiorTemperatura ) {
	    	maiorTemperatura = temps[i];
	    }
	}
	
	return maiorTemperatura;
}

public double menor(Temperatura[] temps) {
	double menorTemperatura = temps[0];

	for(int i = 0; i < temps.length; i++){
	    if ( temps[i] < menorTemperatura ){
	    	menorTemperatura = temps[i];
	    }
	}
	
	return menorTemperatura;
}
1 curtida

Existem algumas formas de otimizar este código, para que não percorra o array cada vez que o método é executado, mas para proposito de aprendizagem, o código acima é suficiente.

1 curtida

da erro mano, pq tempertura nao é double temperatura é do tipo temperatura que vem da classe termometro

error: incompatible types: Temperatura cannot be converted to double

error: bad operand types for binary operator ‘>’

Só trocar os temps[i] por temps[i].getValor()

1 curtida

aeee obrigado mano, funciono perfeito :slight_smile:

1 curtida