Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Lucio Carvalho

como eu faço pra encerrar o programa com do...While

Recommended Posts

Gente alguém me ajuda, como eu faço pra encerrar o programa ao digitar um numero negativo na matricula??? eu to tendo que digitar negativo em todos os campos, e se eu uso outra coisa que não é do while eu teria que digitar a mesma matricula 2 vezes e não quero isso e também eu acho que o negocio de mostrar matricula da pessoa mais nova ta errado, me ajuda nisso também.

Se por acaso tiver algo errado no programa aceito ajuda também .


 

/*
Criar  um  algoritmo  que  receba  a  matricula,  idade  e  o  estado  civil  (1-Casado,  2-Solteiro, 3 -Viúvo e 4-Desquitado) de vários funcionários. Calcule e imprima.
• A quantidade de pessoas casadas;
• A quantidade de pessoas solteiras com idade entre 20 e 30 anos;
• A média de idade das pessoas viúvas;
• A porcentagem de pessoas desquitadas dentre todas as pessoas analisadas
• A idade da pessoa mais velha
• A matrícula da pessoa mais nova
O algoritmo encerra quando se digita um número menor que zero para a matrícula
 */
package javaUn3L3;
/**
 *
 * @author Usuario
 */
import java.util.Scanner;
public class Exercicio10 {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        int matricula, idade, estadoCivil;
        int funcionariosTotal=0, qtdCasadas=0, qtdSolteiras=0, desquitadas=0, percDesquitadas=0;
        int maisVelha=0, matricMaisNova=0, viuvas=0, idadeViuvas=0;
        float mediaIdadeViuvas=0;
        Scanner scan = new Scanner(System.in);
        System.out.println("Entre com um número negativo para encerrar o programa:");
        
        do{
            System.out.println("Entre com o número da matrícula do funcionário:");
            matricula = scan.nextInt();
            System.out.println("Entre com a idade do funcionário:");
            idade = scan.nextInt();
            System.out.println("Entre com o número de uma das opçóes a seguir");
            System.out.println("1 - Casado");
            System.out.println("2 - Solteiro");
            System.out.println("3 - Viúvo");
            System.out.println("4 - Desquitado");
            estadoCivil = scan.nextInt();
            funcionariosTotal = funcionariosTotal+1;
            switch (estadoCivil)
            {
                case 1:
                    qtdCasadas = qtdCasadas+1;
                case 2:
                    if (idade>20 && idade<30){
                        qtdSolteiras = qtdSolteiras+1;
                        
                    }
                case 3:
                    viuvas = viuvas+1;
                    idadeViuvas = idadeViuvas+idade;
                    mediaIdadeViuvas = idadeViuvas/viuvas;
                case 4:
                    
                    desquitadas = desquitadas+1;
                    percDesquitadas = desquitadas/funcionariosTotal;
                    
            }
            
            if (idade>maisVelha)
            {              
            maisVelha = idade;    
            }
            if (idade<maisVelha)
            {
                matricMaisNova = matricula;
            }
                
       
            
                
            
        }while (matricula>=0);
        System.out.println("Casadas:"+qtdCasadas);
        System.out.println("Solteiras entre 20 e 30 anos:"+qtdSolteiras);
        System.out.println("Média idade pessoas viúvas:"+mediaIdadeViuvas);
        System.out.println("Percentual de pessoas desquitadas:"+percDesquitadas);
        System.out.println("Pessoa mais Velha:"+maisVelha);
        System.out.println("Matricula da pessoa mais nova:"+matricMaisNova);
        
        
    
}
    
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

A maneira mais simples de resolver isso sem apelar para gambiarras é a seguinte:

 

- Remova todas as variáveis que você colocou antes do primeiro scan de dentro do método main e coloque elas como variáveis globais do programa.

 

Seu programa ficaria assim:

 

public class Exercicio10 {

  int matricula, idade, estadoCivil;
  int funcionariosTotal=0, qtdCasadas=0, qtdSolteiras=0, desquitadas=0, percDesquitadas=0;
  int maisVelha=0, matricMaisNova=0, viuvas=0, idadeViuvas=0;
  float mediaIdadeViuvas=0;

  public static void main(String[] args) {
      // TODO code application logic here        
      Scanner scan = new Scanner(System.in);
      System.out.println("Entre com um número negativo para encerrar o programa:");

      do{
          System.out.println("Entre com o número da matrícula do funcionário:");
          matricula = scan.nextInt();
          if (matricula >= 0) {
          executaCadastro();
          }
      while (matricula >= 0);

      System.out.println("Média idade pessoas viúvas:"+mediaIdadeViuvas);
      System.out.println("Percentual de pessoas desquitadas:"+percDesquitadas);
      System.out.println("Pessoa mais Velha:"+maisVelha);
      System.out.println("Matricula da pessoa mais nova:"+matricMaisNova);
  }      
}
  
  
  

e o restando do código você coloca dentro do método executaCadastro().

 

Dessa forma, ao digitar qualquer número maior ou igual a zero, o método é chamado e o cadastro prossegue. Ao digitar qualquer número negativo, o cadastro não é chamado por causa do if e o while é encerrado logo em seguida, exibindo o resultado final.

 

Lembre-se: você está usando uma linguagem de programação orientada a objetos. Utilize métodos para realizar diferentes operações. Escrever tudo dentro de um bloco monolítico no main vai deixar seu código confuso, cheio de redundâncias e provavelmente muito complicado de estruturar se quiser que ele execute diversas funções diferentes.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×