Ir ao conteúdo
  • Cadastre-se

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


Posts recomendados

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);
        
        
    
}
    
}

 

Link para o comentário
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

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...