Método de inclusão não funciona

Galera, boa noite.

Estou fazendo um projeto em java, mas parece que meu método de inclusão não funciona corretamente.
Eis o código que obtém os dados do usuário da classe Interface:

	private static void incluiPaciente() 
	{
		Cadastro cadastro = new Cadastro();
		
		try
		{
	                String nome;
			String endereco;
			String sexo;
			int idade;
			String cpf;
			String telefone;
			String diagnostico;
			String tratamento; //mudar para StringBuffer
			int codigoTratamento;
			String profissionalResponsavel;
			String especialidade;
				
			Paciente objPaciente;
			Scanner entrada = new Scanner(System.in);
				
			System.out.println("\nCADASTRO DE PACIENTE:\n");
			System.out.print("Nome: ");	nome = entrada.nextLine().trim();
			while(nome.isEmpty() || nome == " ")
			{
				System.err.println("O nome não foi informado corretamente!");
				nome = entrada.nextLine().trim();
			}
			
			System.out.print("Endereço: "); endereco = entrada.nextLine().trim();
			while(endereco.isEmpty() || endereco == " ")
			{
				System.err.println("O endereço não foi informado corretamente!");
				endereco = entrada.nextLine().trim();
			}
			
			System.out.print("Sexo: ");	sexo = entrada.nextLine().trim();
			while(sexo.isEmpty() || sexo == " ")
			{
				System.err.println("Sexo não foi informado corretamente!");
				sexo = entrada.nextLine().trim();
			}
			
			System.out.print("Idade: "); idade = Integer.parseInt(entrada.nextLine().trim());
			{
				while((idade < 0 || idade > 150))
				{
					System.err.println("Idade informada incorretamente!");
					idade = Integer.parseInt(entrada.nextLine().trim());
				}
			}
			
			System.out.print("CPF (formato 000.000.000-00): "); cpf = entrada.nextLine().trim();
			while(cadastro.validaCpf(cpf) == false || cpf == " ")
			{
				System.err.println("Cpf inválido, verifique os pontos e/ou hífens e tente novamente!\n");
				cpf = entrada.nextLine().trim();
			}
				
			System.out.println("Telefone (formato 0000-0000): "); telefone = entrada.nextLine().trim();
			while(cadastro.validaTelefone(telefone) == false)
			{
				System.err.println("Telefone inválido, verifique os dados e tente novamente!");
				telefone = entrada.nextLine().trim();
			}
				
			System.out.print("Diagnóstico: "); diagnostico = entrada.nextLine().trim();			
			System.out.print("Tratamento: "); tratamento = entrada.nextLine().trim();
			System.out.print("Código do tratamento (apenas números): "); codigoTratamento = Integer.parseInt(entrada.nextLine().trim());
			while(cadastro.validaCodigoTratamento(codigoTratamento) == false)
			{
				System.err.println("Dados informados incorretamente, verifique os dados e tente novamente!");
				codigoTratamento = Integer.parseInt(entrada.nextLine().trim());
			}
			
			System.out.print("Dentista responsável: ");	profissionalResponsavel = entrada.nextLine().trim();
			System.out.print("Especialidade: "); especialidade = entrada.nextLine().trim();
			
			objPaciente = new Paciente(nome, endereco, sexo, idade, cpf, telefone, diagnostico, tratamento, codigoTratamento, profissionalResponsavel, especialidade);
			
			cadastro.inclusao(objPaciente);
			
			System.out.println("\nPaciente cadastrado com sucesso!\n\n");
		}
		catch (Exception e)
		{
			e.getMessage();
		}
	}

E este é o código que realiza a inclusão na classe Cadastro:

[code] public void inclusao(Paciente objPaciente) throws SisDenException
{
for(Paciente obj : listaPacientes)
{
if(obj.getCpf().equals(objPaciente.getCpf()))
{
throw new SisDenException(“Já existe paciente com este CPF cadastrado!”);
}
}

	listaPacientes.add(objPaciente);
}

[/code]

Não sei o que acontece, ele aceita todos os objetos que são passados como parâmetro, mesmo tendo EXATAMENTE O MESO CPF, que é a condição de validação.

Onde está meu erro?

Valeu!!!

Boa noite Guilherme!

Bem, aparentemente seu problema está aqui:

[code]public void inclusao(Paciente objPaciente) throws SisDenException
{
for(Paciente obj : listaPacientes)
{
if(obj.getCpf().equals(objPaciente.getCpf()))
{
throw new SisDenException(“Já existe paciente com este CPF cadastrado!”);
}
}

listaPacientes.add(objPaciente);

} [/code]

Pois ele está incluindo o objPaciente dentro da lista de pacientes mesmo que o Cpf seja igual.

Tente fazer algo assim:

public void inclusao(Paciente objPaciente) throws SisDenException  
{  
    boolean existeCpf = false;
    for(Paciente obj : listaPacientes)  
    {  
        if(obj.getCpf().equals(objPaciente.getCpf()))  
        {  
            existeCpf = true;
            throw new SisDenException("Já existe paciente com este CPF cadastrado!");  
        }  
    }  

    if(!existeCpf){
        listaPacientes.add(objPaciente);
    }
}  

Não é a melhor solução, mas se quiser testar e explorar, fique à vontade! Mas para você que está começando, sugiro que dê uma boa estudada nas apostilas da Caelum. Eles fornecem toda uma orientação para quem está iniciando, e o conteúdo é muito bom, prático e intuitivo :slight_smile: