Problema com arrays e SubMenu

1 resposta
E

Boa tarde (ou bom dia) pessoa,

Sou novo aqui no forum e no java... pelo que estou vendo o pessoal aqui é compreensivo e paciente, acho que podem me ajudar

Estou meio empacado em um trabalho da faculdade e gostaria de saber se alguem pode me ajudar... O que acontece é que estou com dificuldade na lógica de criar esses submenus em joptionpane. Quando eu escolho o segundo botao(listagens) no menu principal, está dando alguns conflitos, pois de alguma maneira está chamando as linhas de comando do primeiro botao(cadastro).
Gostaria que dessem uma olhada e alguma dica de como fazer de uma forma mais organizada. Como por exemplo, criar mais alguma classe.

Desde já agradeço muito a quem ajudar!

Segue o código da classe Principal:
public class Principal {

	public static void main(String[] args) {
		
		//declaracao da ArrayList de Objetos:
		ArrayList<Pessoa> cadastro = new ArrayList<Pessoa>();
		
		
		//Declaracao de variaveis e arrays:
		int opcaoMenuPrincipal;
		int opcaoSubMenu1 = 0;
		int opcaoSubMenu2 = 1;
		int opcaoSubMenu3 = 2;
		
		String[] botaoMenu1 = {"Cadastro", "Listagens", "Informações", "Sair"};
		String[] botaoMenu1_1 = {"Cadastrar Aluno", "Cadastrar Professor"};
		String[] botaoMenu1_2 = {"Listar e-mails de professores", "Listar e-mails de alunos", "Listar todos os emails"};
		String[] botaoMenu1_3 = {"Aluno mais novo", "Aluno mais velho"};
		
		do{
		opcaoMenuPrincipal = JOptionPane.showOptionDialog(null, "Selecione Opção: ","Menu Principal", 0, JOptionPane.QUESTION_MESSAGE, null, botaoMenu1, botaoMenu1[0]);
		
		//Menu Principal:
		switch (opcaoMenuPrincipal) {
			case 0:
				opcaoSubMenu1 = JOptionPane.showOptionDialog(null, "Selecione Opção: ","Menu Cadastro", 0, JOptionPane.QUESTION_MESSAGE, null, botaoMenu1_1, botaoMenu1_1[0]);
				break;
		
			case 1:
				opcaoSubMenu2 = JOptionPane.showOptionDialog(null, "Selecione Opção: ","Menu Listagem", 0, JOptionPane.QUESTION_MESSAGE, null, botaoMenu1_2, botaoMenu1_2[0]);
				break;
			
			case 2:
				opcaoSubMenu3 = JOptionPane.showOptionDialog(null, "Selecione Opção: ","Menu Informacoes", 0, JOptionPane.QUESTION_MESSAGE, null, botaoMenu1_3, botaoMenu1_3[0]);
				break;
			case 3:
				continue;
		}
		
		
		//Sub-Menu / Cadastro:
		switch (opcaoSubMenu1) {
			case 0:
							
				Pessoa aluno = new Pessoa();
				aluno.alunoOuProfessor(1);
				
				aluno.setNome(JOptionPane.showInputDialog(null, "Digite nome completo do Aluno:"));
				aluno.setDataNasc(Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o ano de nascimento de "+aluno.getNome()+":")));				
				
				StringTokenizer nomeEmailAluno = new StringTokenizer(aluno.nome, " ");
				aluno.setEmail(nomeEmailAluno.nextToken()+aluno.getDataNasc()+"@acad.unisul.br");
				
				cadastro.add(aluno);				
				break;
			
			case 1:	
						
				Pessoa professor = new Pessoa();
				professor.alunoOuProfessor(2);
				
				professor.setNome(JOptionPane.showInputDialog(null, "Digite nome completo do Professor:"));
				professor.setDataNasc(Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o ano de nascimento de "+professor.getNome()+":")));			
				
				StringTokenizer nomeEmail = new StringTokenizer(professor.nome, " ");
				professor.setEmail(nomeEmail.nextToken()+professor.getDataNasc()+"@prof.unisul.br");
				
				cadastro.add(professor);
				break;
		}
		
		//Sub-Menu Impressoes:
		switch (opcaoSubMenu2) {
		
		//Imprimir Professores:
		case 0:
			for (int i = 0; i < cadastro.size(); i++) {
				if (cadastro.get(i).getIdentificacao() == 2){			
					System.out.println(cadastro.get(i).getEmail());
				}
			}
			break;
		
			case 1:
				//Imprimir Alunos:
				for (int i = 0; i < cadastro.size(); i++) {
					if (cadastro.get(i).getIdentificacao() == 1){			
						System.out.println(cadastro.get(i).getEmail());
					}
				}
				break;
				
			case 2:
				//Imprimir todos:
				for (int i = 0; i < cadastro.size(); i++) {
					System.out.println(cadastro.get(i).getNome()+"\n"+cadastro.get(i).getEmail());			
					}
				break;
				
			default:
				break;
	}
		
		}while(opcaoMenuPrincipal == 0);		
	}
}
Segue o código da classe Pessoa:
package ExercicioFinal;

import java.util.StringTokenizer;

public class Pessoa {

	String nome;
	int dataNasc;
	String email;
	int identificacao;
	

	public int alunoOuProfessor(int identificacao){
		this.identificacao = identificacao;
		if(this.identificacao == 1){
			return 1;			
		}else{
			return 2;
		}		
	}
	
	

	public int getIdentificacao() {
		return identificacao;
	}



	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public int getDataNasc() {
		return dataNasc;
	}
	
	public void setDataNasc(int dataNasc) {
		this.dataNasc = dataNasc;
	}
	
	public String getEmail() {
		
		return email;
	}
	
	public void setEmail(String email) {
		this.email = email;
	}	
}

para quem quiser se dispor, está aqui o objetivo do trabalho:

[list] Faça um programa Java para armazenar o nome completo, o ano de nascimento e o e­
mail dos alunos e professores da Unisul. Cada uma destas informações deverá ser
armazenada em um array. O usuário deverá digitar apenas o nome completo e ano de
nascimento. O endereço de e­mail deverá ser gerado automaticamente, considerando as
seguintes regras: o domínio dos e­mails dos professores é ?prof.unisul.br? e o domínio dos
e­mails dos alunos é ?acad.unisul.br?; o formato do endereço de e­mail deve ser
primeiro_nome + ano_de_nascimento + @ + domínio.

Métodos deverão ser criados para executar as principais funções do sistema:
Receber o nome completo e retornar apenas o primeiro nome.
Receber o primeiro nome, o ano de nascimento e o domínio e retornar o endereço
de e­mail.

Ademais, através de métodos, o sistema deverá permitir a impressão dos seguintes
relatórios:
Todos os nomes e endereços de e­mail.
Nomes e endereços de e­mail apenas dos professores.
Nomes e endereços de e­mail apenas dos alunos.
Nome do aluno mais novo

Nome do professor mais velho
O sistema deverá apresentar um menu ao usuário e a partir deste menu, todas as
operações deverão se inicializadas. Utilize uma estrutura de repetição para executar as
opções do usuário.

1. Cadastrar professor
2. Cadastrar aluno
3. Listar e­mails de professores
4. Listar e­mails de alunos
5. Listar todos os e­mails
6. Aluno mais novo
7. Professor mais velho
8. Sair[/list]

1 Resposta

Eder_Peixoto

Testei seu programa e não constatei o problema relatado.

Criado 26 de setembro de 2009
Ultima resposta 26 de set. de 2009
Respostas 1
Participantes 2