Porque aparentemente não executa o ultimo método?

9 respostas
B

Porque não executa, ou pelo menos nao aparece o print do metodo SOMA...
Tenho outra duvida também, como eu faria para fazer uma média? Pois no caso eu iria somar tudo e depois divitir pelo tanto de numero que tenho, como eu faço para saber quantos numero tem? ... E ultima duvida, nao entendi direito pra que serve o .length ? Ele soma? Usaria ele entao?

public class CaclculosMatematicos {

	static double[] arranjo = { 2.3, 3.9, 1.3, 5.4, 2.5, 9.9, 3.2 };

	static double devolveMaior(double[] valores) {

		double result = valores[0];
		for (int i = 1; i < valores.length; i++) {
			if (result < valores[i]) {
				result = valores[i];
			}
		}
		System.out.println("Valor Maior: " + result);
		return result;

	}

	static double devolveMenor(double[] valores) {
		double result = valores[0];
		for (int i = 1; i < valores.length; i++) {
			if (result > valores[i]) {
				result = valores[i];
			}
		}
		System.out.println("Valor Menor: " + result);
		return result;
	}

[b]	static double soma(double[] valores) {
		double result = 0.0;
		for (int i = 1; i < valores.length; i++) {
			result = +valores[i];
			return result;
		}
		System.out.println("A Soma e: " + result);
		return result;
	}[/b]

	public static void main(String[] args) {
		devolveMaior(arranjo);
		devolveMenor(arranjo);
		soma(arranjo);

	}
}

9 Respostas

B

Ele não está somando porque dentro do seu for você está retornando o result sem imprimir. Troque o seu for para for (int i = 1; i < valores.length; i++) { result += valores[i]; }
O length é o tamanho do array, ou seja, a quantidade de números. Para fazer uma média basta somar todos dentro de um for com um contador, e depois dividir a soma pelo contador. Quase a mesma coisa da soma.

Giulliano

tem certeza do que vc esta falando !!!

[Essa menssagem foi pro autor…]

WendersonLP

função para calcular a média dos números

public void displaySeveral( double[] values ){
         double sum = 0.0;
         int divisor = values.length - 1;
         for( int i = 0; i < values.length; i++ )
               sum += values[ i ];

         System.out.println( "Resulted of the Several = " + ( sum / divisor ) );
}
vitor_lima

Toda vez que uma linha no formato

[b] return <retornoQualquer> [/b]

é executada, o método que a contém é abandonado e as
linhas que estiverem abaixo do return não são executadas.

É por isso que, como foi dito pelo colega bKn, você tem que tirar o return
de dentro do for, pois da maneira que você colocou, apenas o 1º looping
do for é executado.

Quanto a divisão:

Você pode dividir a soma por valores.length para obter a média, já que
esse valores.length representa exatamente o número de lementos somados.

Abraço.

wbdsjunior

além do que o pessoal já disse:

for (int i = 1; i < valores.length; i++) { result = +valores[i]; // aqui você não está somando. está apenas informado que os valores são positivos. return result; }
abraço.

B

A divisão seria assim???

static double media(double[] valores) { double result = 0.0; for (int i = 1; i < valores.length; i++) { result += valores[i]; } result / valores.length; System.out.println("A Soma e: " + result); return result; }

B

CONSEGUI…

Muito obrigado pelas ajudas…

static double media(double[] valores) { double result = 0.0; for (int i = 1; i < valores.length; i++) { result += valores[i]; } result = result / valores.length -1 ; System.out.println("A Soma e: " + result); return result; }

vitor_lima

Sim.

Desse jeito funcionará.

Mas se você quiser deixar seu código com uma linha a menos pode
fazer o seguinte dentro do for:

result += valores[i]/valores.length;

E então retirar a linha referente a divisão do código.

(Mas isso é totalmente subjetivo . . .)

vitor_lima

Você não deveria estar dividindo por

valores.length -1

e sim por
valores.length .

Você está tendo que fazer isso porque seu for começa do 1 e não do ZERO.

Começando do 1 você não utiliza o valor da 1ª posição do seu vetor.

Criado 30 de junho de 2009
Ultima resposta 30 de jun. de 2009
Respostas 9
Participantes 6