Calcular media usando o while

6 respostas
Evellyn

O enunciado da questao:
“Um programa q le um conjunto de numeros inteiro usando while e calcule sua media”

o que eu fiz:

Scanner input = new Scanner (System.in);
		System.out.print("Determine o tamanho do conjunto: ");
		int conjunto = input.nextInt();
		int tamanho [] = new int [conjunto];
		System.out.println("Digite " + conjunto + " numeros: ");
		for (int i = 0; i < tamanho.length; i++){
		tamanho [i] = input.nextInt();
			}
		for (int i = 0; i < tamanho.length; i++){
			int totalNum = 0;
		while (tamanho[i] != 0){
			totalNum = totalNum + tamanho[i];
			System.out.print("" + totalNum);
			int media;
			media = totalNum/conjunto;
			System.out.print("" +media);
		}
			System.out.println("Erro!");
		}
			
			}

}

Corrijam meus erros, por favor…

6 Respostas

renzonuccitelli

Não entendi o pq do while dentro do for. Além disso, sua mensagem de erro vai ser impressa toda hora. Seguindo mais ou menos a linha de racicionio que pude entender do seu código, farias as seguintes mudanças:

Scanner input = new Scanner (System.in);
		System.out.print("Determine o tamanho do conjunto: ");
		int conjunto = input.nextInt();
		int tamanho [] = new int [conjunto];
		System.out.println("Digite " + conjunto + " numeros: ");
		for (int i = 0; i < tamanho.length; i++){
		tamanho [i] = input.nextInt();
			}
                int totalNum = 0;
		for (int i = 0; i < tamanho.length; i++){
			totalNum = totalNum + tamanho[i];
			
		}

                 double media;
		media = (double)totalNum/(double)conjunto;
		System.out.print("Média:" +media);
			
			}

}

eu só preferi colocar a média como double, caso contrário vc vai obter apenas o número inteiro depois de a média ser arredondada, mas se vc nao kiser fazer essa mudança, basta colocar a média como interira de novo.

Uma outra opção para pegar os inputs seria deixar o usuário colocar qtos números kisesse sem mandar ele colocar a qtde de numeros que deseja, e colocando uma tecla de escape para ver se ele acabou de colocar os numeros...

Vini_Fernandes
public class Calculo{
	public double media(Object [] numeros){
		int count =0;
		double media = 0;
		while(count < numeros.length){
			media += Double.valueOf(numeros[count].toString());
			count++;
		}
		return media/numeros.length;
	}
	
	public static void main(String [] args){
		Calculo calculo = new Calculo();
		
		System.out.println("A media dos interios eh: "+calculo.media (args));
	}
}

Cara, veja que este programa nao se recupera quando o usuario digita um caractere qualquer na linha de comando. Cabe a voce tratar as excecoes! Note tambem que voce podera digitar alem de inteiros, por exemplo:

java Calculo 12 23.33 5435.555 222222

e a saida sera:

A media dos interios eh: 56923.22125

Ate

Lavieri

Acho que c vc quer fazer com while ... isso quer dizer, que vc tem que ficar no loop enquanto uma condição for verdade... acredito que o melhor seria perguntar se o usuario deseja digitar mais um número... e assim calcular a media

Ps.: vc poderia verificar se o valor digitado foi em branco e ai sair do loop... mais no exemplo que coloquei... vc digita "S" para continuar no loop
public static void main(String ... args) {
        Scanner input = new Scanner (System.in);
        int count = 1;
        System.out.print("Digite o numero: ");
        double media = input.nextDouble();
        boolean continuarCalculando;

        do {
           System.out.print("Deseja digitar mais um número? ");
           continuarCalculando = input.next().toUpperCase().equals("S");
           if (continuarCalculando) {
              System.out.print("Digite o numero: ");
              media = (media*count + input.nextDouble())/(++count);
           }
        } while (continuarCalculando);

        System.out.println("Media: " + media);
    }
W
Scanner teclado = new Scanner(System.in);
String opcao = "s";
int cont = 0;
double media = 0;
int soma = 0;
int num = 0;
while (opcao.equalsIgnoreCase("S")){
	cont++;
	System.out.println("Digite um numero: ");
	num = teclado.nextInt();
	soma = soma + num;
	System.out.println("Deseja entrar com outro numero? (s/n): ");
	opcao = teclado.next();
			
	} 

media = (soma / cont);
System.out.println("A média dos numeros digitados é: "+media);
Evellyn

Gente, muito obrigada, vlw msm.

rafaelgiffonepc

Muito obrigado!
Me ajudou também a construir um laço de repetição.

Abraço! :smiley:

Criado 10 de fevereiro de 2009
Ultima resposta 3 de abr. de 2012
Respostas 6
Participantes 6