Duvida com estrutura while ajuda

3 respostas
C

Pessoal estou tentando fazer um programa que
leia um número indeterminado de linhas contendo cada uma a idade de um indivíduo. A ultima linha, que não entrará nos cálculos, contem o valor da idade igual a zero.
Calcule e escreva a idade média deste grupo de indivíduos.Estou enrrolado no calculo quem poder me ajudar eu agradeço.Obrigado

import java.io.*;
import javax.swing.JOptionPane;
  class Idade
  {
 	public static void main (String args[])
 	{
 		
  	String S="";
  	int idade=0,cont=0;
  	double media=0;
  	DataInputStream dado;
  	try 
  	{
  		System.out.println("Digite a idade do individio");
  		dado = new DataInputStream(System.in);
  		S=dado.readLine();
  		idade=Integer.parseInt(S);
        System.out.println("A sua idade é  " + idade +  " anos.");
      
     	}
  		 while(idade=0) 
  		 {  	
  		  idade=idade +1;
  		 cont=cont+1;
  		 meida=idade/cont;
  		 System.out.print("O media é"+media);  
  		 }
  		 
 	
  		        	
  		catch (IOException e) 
        {
      	System.out.println("Erro");  			
  	  	}
  		
  	}	
  }

3 Respostas

BrunoBastosPJ

Bem vamos para a lógica do programa…

Do jeito que você está tentando fazer você está lendo a idade antes do Loop. Na lógica do programa você tem que ler essa idade N vezes, até o usuário digitar 0, correto?
Existem várias maneiras de fazer esse loop… Na mais fácil você pode fazer um while(true), ou seja um loop infinito, e ter um if(idade == 0) break; como condição de parada.
Na segunda, mais complicada, você pode ler a idade e entrar no loop enquanto esta for diferente de 0. while(!(S = dado.readLine()).equals(“0”)) //Estou sem compilador aqui, não sei se a sintaxe ta certa :razz:

Depois é fácil. Basta somar dentro deste loop todas as idades lidas, e fazer um contador para saber quantas foram. Em seguida, fora do loop tirar a médias dessas idades.

Espero ter ajudado

Abs

S

Segue o que o Bruno falou aí para você aprender velho.
Mas aqui vai de presente o programinha.

import java.io.*;   
import javax.swing.JOptionPane; 

public class MediaIdade
{
    public static void main (String args[])   
    {   
	    String S="";   
	    int idade=-1,cont=0,soma=0;   
	    double media=0;   
	    DataInputStream dado;   
	    try   
	    {   
	         while(idade!=0)
	         {
				System.out.println("Digite a idade do individio");   
				dado = new DataInputStream(System.in);   
				S=dado.readLine();   
				idade=Integer.parseInt(S);   
				System.out.println("A sua idade é  " + idade +  " anos.");	        	 
				soma +=idade;
				cont=cont+1;   
	         }
			media=soma/(cont-1);   
			System.out.print("O media é "+media);
	    }
	    catch (IOException e)
	    {   
        	System.out.println("Erro");               
	    }   
	}
}
C

Valeu pessoal ja consegui resolver o problema.Obrigado

Criado 26 de junho de 2008
Ultima resposta 28 de jun. de 2008
Respostas 3
Participantes 3