terça-feira, 2 de junho de 2015

Exceções Java

Exercício Exceções Java

Crie um aplicativo, chamado ExcecaoJava que permita o registro de dados coletados através de pesquisa de campo junto a uma amostra de até 100 pessoas. Os dados coletados junto  cada pessoa são apenas três: nome, idade e estado civil. Este aplicativo deve realizar toda interação com o usuário através de interface gráfica (Diálogos). 

Procure implementar este aplicativo de modo que sua interação com o usuário se estabeleça como a seguir:



- Armazene os nomes dos entrevistados em um vetor de String;
- Utilize um vetor do tipo byte para armazenar as idades;
- Utilize um vetor para armazenar estado civil. Os valores que serão armazenados serão: S, C, V, D, O.
- Quando o usuário cancelar um dos diálogos de entrada, o aplicativo deve considerar que os dados de todos os entrevistados já foram registrados. Nesse caso, realizar os cálculos estatísticos sobre estes dados e exibir o relatório final através de um diálogo gráfico de saída;
- Devem ser exibidos as seguintes informações: Os dados de todas as pessoas entrevistadas; A média de idade dos entrevistados;  O percentual de pessoas que se enquadra em cada estado civil.
- Se um dado informado não for válido, o aplicativo deve emitir um mensagem de erro e solicitá-lo novamente;
- A validade dos dados será quebrada nas situações descritas abaixo e as mensagens de erro devem ser exibidas são aquelas indicadas:
  • Se o nome contém menos de 5 ou mais de 50 cacarteres, exiba a mensagem de erro: "O nome deve conter de 5 a 50 caractares!";
  • Se o nome contiver dígitos numéricos, exiba a mensagem de erro: "O nome não deve conter números!".
  • Se a idade não for um número inteiro ou se for um número inteiro superior a 127, exiba a mensagem de erro: "Dado inválido!";
  • Se a idade for menor que zero, exiba a mensagem de erro: "Não existe idade negativa!";
  • Se o estado civil informado não for um dos caracteres previstos (S, C.V, D e O), exiba a mensagem de erro: "Opção inválida!".

4 comentários:

  1. package excecaojava;
    import javax.swing.JOptionPane;
    public class ExcecaJava {

    public static void main(String[] args) {
    String [] nome=new String[100];
    byte [] idade=new byte[100];
    String [] estado=new String[100];

    //try{
    for(int i=0;i<=100;i++){
    nome[i]=JOptionPane.showInputDialog(null,"Digite o nome: ");
    idade[i]=Byte.parseByte(JOptionPane.showInputDialog(null,"Digite a idade: "));
    estado[i]=JOptionPane.showInputDialog(null,"Digite seu estado civil: \nC - Para casado.\nS - para Solteiro.\nV - para Viuvo. \nD - para Divorciado. \nO - para Outros.");
    }

    }
    //catch{

    //}

    }

    //}

    ResponderExcluir
  2. package excecaojava;
    import javax.swing.JOptionPane;
    public class ExcecaoJava {

    public static void main(String[] args) {

    String [] nome=new String[100];
    byte [] idade=new byte[100];
    String [] estado=new String[100];
    String dados="";
    int i;
    int parado = 0;
    float mediaIdade=0;

    for(i=0;i<=100;i++){

    try{
    nome[i]=JOptionPane.showInputDialog(null,"Digite o nome: ");
    if (nome[i]==null){break;}
    }finally{}

    while(idade[i]==0){
    try{
    idade[i]=Byte.parseByte(JOptionPane.showInputDialog(null,"Digite a idade: "));
    if (idade[i]==0){break;}
    mediaIdade=mediaIdade+idade[i];
    }catch(NumberFormatException a){JOptionPane.showMessageDialog(null,"POR FAVOR DIGITE APENAS NUMEROS");}}

    try{
    estado[i]=JOptionPane.showInputDialog(null,"Digite seu estado civil: \nC - Para casado.\nS - para Solteiro.\nV - para Viuvo. \nD - para Divorciado. \nO - para Outros.");
    if (estado[i]==null){break;}
    }finally{}
    dados=dados+(nome[i]+" - "+idade[i]+" - "+estado[i]+"\n");

    parado++;
    }

    mediaIdade=(mediaIdade/parado);

    JOptionPane.showMessageDialog(null,mediaIdade);



    }
    }

    ResponderExcluir
  3. public class Executavel {

    public static void main(String[] args) {
    int controle = 100;
    String [] nome = new String[controle];
    byte [] idade = new byte[controle];
    String [] eCivil = new String[controle];

    int i;
    int cont = 0;
    boolean opc = false;
    boolean loop;
    try{
    while(opc == false){//loop do cadastro 'nome, idade e estado civil'

    do{//inicio da entrada e validação do atributo nome------------------------------------
    loop = false;
    nome[cont] = JOptionPane.showInputDialog("Nome completo: ");
    if (nome[cont].length() < 5 || nome[cont].length() > 50){
    JOptionPane.showMessageDialog(null, "O nome deve conter entre 5 e 50 caracteres");
    loop = true;
    }else{
    for(i = 0; i < nome[cont].length(); i++){//loop para verificar cada caractere do nome digitado.
    char caracter = nome[cont].charAt(i);//retorna um char para variavel c.
    if(Character.isDigit(caracter)){//verifica se a variavel c é um número.
    JOptionPane.showMessageDialog(null, "O nome digitado não pode conter números.\nNome digitado '"+nome[cont]+"'.");
    loop = true;
    break;
    }//fim if.
    }//fim for.
    }//fim else.
    }while(loop == true);//fim do/while da entrado do nome.

    do{//inicio da entrada e validação do atributo idade---------------------------------
    loop = false;
    try{
    idade[cont] = Byte.parseByte(JOptionPane.showInputDialog("Idade: "));
    if(idade[cont] < 0 || idade[cont] > 127){
    JOptionPane.showMessageDialog(null, "Por favor digite apenas números entre 0 e 127.\nIdade digitada '"+idade[cont]+"'.");
    loop = true;
    }
    }catch(NumberFormatException e){
    JOptionPane.showMessageDialog(null, "Por favor digite apenas números entre 0 e 127.\n"+e);
    loop = true;
    }
    }while(loop == true);//fim do/while da entrado da idade.

    do{//inicio da entrada e validação do atributo Estado civil----------------------------
    loop = false;
    String a = JOptionPane.showInputDialog("Estado Cívil (Digite a letra correspondente a opção):\n\n"+
    "S - Solteiro(a)\nC - Casado(a)\nV - Viuvo(a)\nD - Divorciado(a)\nO - Outros");
    eCivil[cont] = a.toUpperCase();//retorna o valor digitado MAIUSCULO.
    //Compara o valor digitado com as opções.
    if(eCivil[cont].equals("S") || eCivil[cont].equals("C") || eCivil[cont].equals("V") || eCivil[cont].equals("D") || eCivil[cont].equals("O")){
    }else{
    JOptionPane.showMessageDialog(null, "Opção invalida, você digitou '"+eCivil[cont]+"', observe as opções do menu.");
    loop = true;
    }
    }while(loop == true);//fim do/while da entrado do Estado Civil.

    ResponderExcluir
  4. //continuação
    cont++;//incremento da quantidade de dados inserio no vetor.
    if(cont == controle){
    JOptionPane.showMessageDialog(null,"Cadastro inserido com sucesso. Vetor completo.\nAgora será exibido o resultado.");
    opc = true;
    }else{
    JOptionPane.showMessageDialog(null,"Cadastro inserido com sucesso.");
    }
    }//fim do loop do cadastro 'nome, idade e estado civil'

    }catch(NullPointerException e){//Excessão lançada quando pressionado a opção cancelar em qualquer dialogo.
    JOptionPane.showMessageDialog(null, "Se o último cadastro estiver incompleto será descartado.\n"+e);
    }
    //PROCESSAMENTO E EXIBIÇÃO DOS DADOS DA PESQUISA
    String amostra = "AMOSTRA PESQUISADA\n\n";
    String estCivil;
    int mIdade = 0, idades = 0, s = 0, c = 0, v = 0, d = 0, o = 0;
    for(int x = 0; x <= cont; x++){
    amostra += nome[x]+" - ";
    amostra += idade[x]+" - ";
    amostra += eCivil[x]+".\n";
    idades += idade[x];
    estCivil = eCivil[x];
    System.out.print(eCivil[x]);
    if(estCivil.equals("S")){
    s++;
    }else if(estCivil.equals("C")){
    c++;
    }else if(estCivil.equals("V")){
    v++;
    }else if(estCivil.equals("D")){
    d++;
    }else if(estCivil.equals("O")){
    o++;
    }
    }
    try{
    mIdade = (idades/cont);
    amostra += "\nDADOS ESTATÍSTICOS\n\n"+
    "Média de idade: "+mIdade+
    "\nPercentual de Solteiros: "+(s*100)/cont+
    "\nPercentual de Casados: "+((c*100)/cont)+
    "\nPercentual de Viúvos: "+((v*100)/cont)+
    "\nPercentual de Divorciados: "+((d*100)/cont)+
    "\nPercentual de Outros: "+((o*100)/cont);
    }catch(ArithmeticException e){
    JOptionPane.showMessageDialog(null, "Nenhum Dado inserido. "+e);
    }
    JOptionPane.showMessageDialog(null, amostra);

    }//fim main.
    }//fim classe executavel.

    ResponderExcluir

 

Charles Maquiavel

"Não há nada mais difícil do que se ter em mãos algo novo, nem nada mais perigoso do que conduzir por caminhos inéditos, ou incertos quanto ao sucesso, ao se tomar a dianteira na introdução de uma nova ordem das coisas."

Martha Gabriel

"Sábios nos encantam e estúpidos nos cansam. Os meios digitais apenas ampliaram o poder de ambos, mas a escolha de quem ouvir ainda é nossa."

Sou + vc na Estácio

A Universidade Estácio de Sá está com matriculas abertas para nosso próximo semestre 2016.3 EAD. Oferece 25% de desconto durante todo o primeiro semestre letivo. Não perca essa oportunidade!
Aproveite uma degustação, diversos cursos livres e grátis. Basta acessar o link: http://experimenteseusonho.com.br/Portal/Modules/Login/
 
Blogger Templates