Duvidas com método de consuta por nome

Fala pessoal, blz?

Estou tendo uns probleminhas pra conseguir fazer uma consulta em uma ArrayList através de nome.
Eu criei uma classe chamada Interface que recebe do usuário as informações e chama os métodos da classe Cadastro que realiza as operações. Quando eu digito um nome para ser realiado a consulta, ao inves de me retornar o nome encontrado ou uma exceção dizendo que o nome nao existe, ele simplesmente volta para o menu principal!!!
O que pode estar acontecendo

Vou colocar aqui os métodos.

Método ConsultaPacienteNome da classe Interface:

[code] private static void consultaPacienteNome()
{
try
{
String nome;
Scanner entrada = new Scanner(System.in);
Cadastro cadastro = new Cadastro();

		System.out.print("\nCONSULTA PACIENTE POR NOME:\n");
		System.out.print("\nNome: ");
		nome = entrada.nextLine();
		
		System.out.println(cadastro.consultaPacienteNome(nome));
		entrada.nextLine();			
	}
	catch (Exception e)
	{
		e.getMessage();			
	}		
}

[/code]

Agora o metodo consultaPacienteNome da classe cadastro

public Paciente consultaPacienteNome(String nome) throws SisDenException { for(Paciente objPaciente : listaPacientes) { if(objPaciente.getNome().equalsIgnoreCase(nome)) { return objPaciente; } } throw new SisDenException("Paciente não encontrado!"); }

e alguem souber de algo eu agradeço.

Parece certo, como você está inserindo os dados nessa lista?

Olá.

Meu metodo de inclusão é o seguinte.

Método cadastroPaciente da classe interface

[code]private static void cadastroPaciente()
{
try
{
String nome;
String endereco;
String sexo;
int idade;
String cpf;
String telefone;
String diagnostico;
String tratamento;
int codigoTratamento;
String profissionalResponsavel;
String especialidade;

		Cadastro cadastro = new Cadastro();
		Scanner entrada = new Scanner(System.in);
		
		System.out.println("\nCADASTRO DE PACIENTE:\n");
		System.out.print("Nome: ");	nome = entrada.nextLine().trim();
		System.out.print("Endereço: "); endereco = entrada.nextLine().trim();					
		System.out.print("Sexo: ");	sexo = entrada.nextLine().trim();			
		System.out.print("Idade: "); idade = Integer.parseInt(entrada.nextLine().trim());			
		System.out.print("CPF (formato 000.000.000-00): "); cpf = entrada.nextLine();
		while(cadastro.validaCpf(cpf) == false || cpf == null)
		{
			System.out.println("Cpf inválido, verifique os pontos e/ou hífens e tente novamente!");
			cpf = entrada.nextLine();
		}
		
		System.out.println("Telefone (formato 0000-0000): "); telefone = entrada.nextLine().trim();
		while(cadastro.validaTelefone(telefone) == false)
		{
			System.out.println("Telefone inválido, verifique os dados e tente novamente!");
			telefone = entrada.nextLine();
		}
		
		System.out.print("Diagnóstico: "); diagnostico = entrada.nextLine().trim();			
		System.out.print("Tratamento: "); tratamento = entrada.nextLine().trim();
		System.out.print("Código do tratamento: ");	codigoTratamento = Integer.parseInt(entrada.nextLine().trim());
		System.out.print("Dentista responsável: ");	profissionalResponsavel = entrada.nextLine().trim();
		System.out.print("Especialidade: "); especialidade = entrada.nextLine().trim();
		
		Paciente objPaciente = new Paciente(nome, endereco, sexo, idade, cpf, telefone, diagnostico, tratamento, codigoTratamento, profissionalResponsavel, especialidade);
		
		cadastro.incluirPaciente(objPaciente);
	}
	catch (Exception e)
	{
		e.getMessage();
	}
}	

[/code]

método incluiPaciente da classe Cadastro

public void incluirPaciente(Paciente objPaciente) throws SisDenException { Scanner digita = new Scanner(System.in); for(Paciente obj : listaPacientes) { if(obj.getCpf().equals(objPaciente.getCpf())) { throw new SisDenException("Paciente já cadastrado, confira os dados e tente novamente!"); } } listaPacientes.add(objPaciente); System.out.println("\nPaciente cadastrado com sucesso, pressione qualquer tecla para continuar!"); digita.nextLine(); }

Eu consigo incluir novos pacientes e armazeno nos ArrayLists e no método de consulta por nome adicionei um if para testar se a ArrayList esta vazia, mas sempre que faço a consulta, agora ela acusa que esta vazia.
Tentei incluir um paciente exatamente igual a um ja cadastrado e o programa aceitou, será que nao esta incluindo no ArrayList??

Abraços.

Oi,

Examinando o código, acho que tem duas observações:

  1. No método da classe Interface vc escreveu:
catch (Exception e)  
    {  
        e.getMessage();           
    }         

a exceção retorna o getMessage() mas você descarta a informação. Não seria mais correto:

catch (Exception e)  
    {  
        System.err.println(e.getMessage()); 
    }         
  1. Outro detalhe esta na classe Cadastro. Nela, o método de consulta retorna um objeto do tipo Paciente:
public Paciente consultaPacienteNome(String nome) throws SisDenException  

Mas em Interface, voce parece tratar o retorno do método como trataria uma String:

System.out.println(cadastro.consultaPacienteNome(nome)); 

Para dar certo você tem que sobreescerver o método toString() em Paciente, ou mudar o valor de retorno de em consultaPacienteNome().

Espero ter ajudado.

Hel_all

Todos os métodos estão na mesma classe? Você cria o listaPaciente com new uma vez só?

Melhor ainda é ao invés de fazer:

System.err.println(e.getMessage());

Fazer:

e.printStackTrace();

[quote]Melhor ainda é ao invés de fazer:
System.err.println(e.getMessage());

Fazer:

e.printStackTrace();  

[/quote]

Sem dúvida!

Uma outra possibilidade que vi é, na consultaPacienteNome da classe Interface, ao invès de

System.out.println(cadastro.consultaPacienteNome(nome));

poderia ser:

System.out.println(cadastro.consultaPacienteNome(nome).getNome());

Isso também seria possível…