Dúvida - Exercicio iniciante (While)

Qual seria a maneira de resolver esse exercício ? A maneira que eu cheguei não está legal porque eu preciso atribuir um valor a idade. De que outra maneira eu mudaria na parte do While pra não acontecer isso ? Obg

Faça um algoritmo que receba a idade e a altura de várias pessoas, calcule e mostre
a média das alturas daquelas com mais de 50 anos.

-Para encerrar a entrada de dados, digite uma
idade menor ou igual a zero.

    int idade=1, contadorPessoas;
    float altura, acumuladorAlt, media;
    
    
   
    acumuladorAlt = 0;
    contadorPessoas = 0;
    

    
    while(idade > 0){
        
        System.out.println("Digite sua altura:");
        altura = in.nextFloat();
        System.out.println("Digite sua idade:");
        idade = in.nextInt();
        
        if(idade>50){
            acumuladorAlt+=altura;
            contadorPessoas++;
            
        }
        
        
    }
        media = acumuladorAlt / contadorPessoas;
        System.out.println("A media é:"+media);

Você pode simplesmente criar uma variavel int opcao, e oferecer um menu de opções.
Ex:
1 - Inserir pessoa
2 - Listar pessoas
3 - Ver media atual
4 - Sair.

E colocar um do {} while(opcao != 4);
Colocar um switch case dentro desse do while.

1 curtida

Você pode criar funçôes e deixar seu código mais desacoplado, o jeito correto seria você usar os conceitos de OO, extinguir variavéis globais da sua aplicação dentre outros fatores, mas como és iniciante, uma forma não elegante como a que você usou, mas que não inicializa a váriavel idade para poder entrar no while, seria ter uma váriavel que identificasse se é a primeira execução da aplicação, mas atente que isso é uma péssima prática de programação e serve apenas para clarear possibilidades de executar seu código de outros meios, caso tenha dúvidas com fazer só perguntar abraços!!

1 curtida

vlw, pessoal!

Veja um exemplo que eu tinha citado acima. Fiz bem rapido aqui, pode servir para você, caso queira fazer algo parecido depois.

import java.awt.HeadlessException;
import java.util.Scanner;
import javax.swing.JOptionPane;

/**
*

  • @author Jon
    */
    public class CalculoEstatistica {
    public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int idade, contadorPessoas;
    float altura, acumuladorAlt, media;

    acumuladorAlt = 0;
    contadorPessoas = 0;
    byte opcao2 = 0;

    do {
    String menuPrincipal = “” +
    “Menu principal\n” +
    “1 - Inserir pessoa\n” +
    “2 - Listar pessoas\n”+
    “3 - Ver media atual\n”+
    “4 - Sair”;

     try {
     opcao2 = Byte.parseByte(JOptionPane.showInputDialog(menuPrincipal));
     if (opcao2 <1 || opcao2 >4) {
         JOptionPane.showMessageDialog(null, "Opção inválida!"); continue;}
     } catch(HeadlessException | NumberFormatException e) {
             JOptionPane.showMessageDialog(null, "Opção inválida!");
         }
     
     switch (opcao2) {
         case 1:
     altura = Float.parseFloat(JOptionPane.showInputDialog("Digite sua altura:"));
     idade  = Integer.parseInt(JOptionPane.showInputDialog("Digite sua idade:"));
     if(idade>50){
         acumuladorAlt+=altura;
         contadorPessoas++;
     } break;
     
         case 2: 
             JOptionPane.showMessageDialog(null,"Total: "+contadorPessoas+" pessoas");
             break;
         
         case 3:  
             media = acumuladorAlt / contadorPessoas;
             JOptionPane.showMessageDialog(null,"Media altura atual: \n"+media);
             break;
         case 4: break;    
    
     }   
    

    } while (opcao2 != 4);

    }

}

1 curtida