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!".
package excecaojava;
ResponderExcluirimport 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{
//}
}
//}
package excecaojava;
ResponderExcluirimport 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);
}
}
public class Executavel {
ResponderExcluirpublic 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.
//continuação
ResponderExcluircont++;//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.