Comparacao de nomes

To com o seguinte problema pessoal…
Se eu cadastrar a pessoa GABRIEL , e na hora de remover , eu digitar gabriel , não remove…diz que não foi encontrado…
Como corrigir isso !?
Outra duvida… no meu metodo de insercao gostaria ki ele verificasse se já existe um número de candidato igual…se existir emite mensagem de NUMERO JA CADASTRADO.
segue os codigos abaixo.


// Codigo pra remoção 
public String removeCandidato(String nomeCand)
    {   
        String impressao ="";
        if(listaVazia())
        {
            impressao = "Não há nenhum candidato afiliado com este nome!";        
        }
        else
        {
            NoLista p = cab;
            NoLista q = null;
            if(cab.getProx() == null && nomeCand.compareTo(cab.getInfo().getNome()) == 0)// se tiver somente um nó e o nome for encontrado
            {
                cab = null;
                impressao = "Candidato removido com sucesso!";
            }
            else if(cab.getProx()!= null && nomeCand.compareTo(cab.getInfo().getNome()) == 0)// se tiver mais de um nó e o nome for encontrado na cabeça
                { // se tiver mais de um nó e o nome for encontrado na cabeça
                    cab = cab.getProx();
                    impressao = "Candidato removido com sucesso!";
                }
                else
                {
                    while(p.getProx() != null && nomeCand.compareTo(p.getInfo().getNome()) != 0)// se tiver mais de um nó e o nome não for encontrado na cabeça
                    {
                        q = p;
                        p = p.getProx();
                        impressao = "Candidato  removido com sucesso!";
                    }
                    if(nomeCand.compareTo(p.getInfo().getNome()) == 0)
                    {
                        q.setProx(p.getProx());
                        impressao = "Candidato  removido com sucesso!";
                    }
                    else
                    {
                        impressao = "Candidato não encontrado";
                    }
               }
        }
        return impressao;

[code]//Chamada no main
nomeCand = (String) JOptionPane.showInputDialog(null,“Digite o nome do Candidato que deseja remover”,“Cadastro de nome”,JOptionPane.QUESTION_MESSAGE,icone1,null,null);

                     partido = Integer.parseInt((String) JOptionPane.showInputDialog(null,"Selecione o partido do Candidato:  \n\n"+
                                                                "[1] - PT \n"+    
                                                                "[2] - PSDB \n"+ 
                                                                "[3] - PMDB \n"+ 
                                                                "[4] - PV \n\n" ,"Seleção de Partido",JOptionPane.QUESTION_MESSAGE,icone1,null,null));
                                                                 
                       if (partido > 0 && partido <5) //verifica se o partido é válido
                         {
                       JOptionPane.showMessageDialog(null,p.removeCandidato(nomeCand,(partido)));
                        }
                        else
                         JOptionPane.showMessageDialog(null,"Erro! Opção inválida","Erro",JOptionPane.ERROR_MESSAGE,icone5);
                        
                     break;[/code]

[code] // Inserir candidato

public String insereCandidatoOrdenado(Candidato f) 
{   
    if(listaVazia()){ // se a lista estiver vazia  
        NoLista p = new NoLista(f,null);
        cab = p;  // o funcionário é inserido na cabeça da lista
    }
    else{ // se a lista não estiver vazia
        NoLista p = cab; // cria-se uma referência para cab, assim podemos percorrer a lista
        NoLista q = null;
        NoLista t = new NoLista(f, null);
        while(p.getProx()!=null && f.getNome().compareTo(p.getInfo().getNome()) > 0)
        {
            q = p;
            p = p.getProx();
        }
        if(p == cab && f.getNome().compareTo(p.getInfo().getNome()) <= 0)     // se p estiver valendo cab e o nome do funcionário
        {                                                                     // for menor ou igual ao funcionário p                                   
            t.setProx(p);
            cab = t;
        }
        else if(p == cab && f.getNome().compareTo(p.getInfo().getNome()) > 0) // se p estiver valendo cab e o nome do funcionário
        {                                                                     // for maior que funcionário p 
            t.setProx(p.getProx());
            p.setProx(t);
        }
        else if(p != cab && f.getNome().compareTo(p.getInfo().getNome()) <= 0)// se p for diferente de cab e o nome do candidato
        {                                                                     // for menor ou igual ao funcionário p   
            t.setProx(q.getProx());
            q.setProx(t);
         }
        else                                                                  // se p for diferente de cab e o nome do candidato
        {                                                                     // for maior do que o funcionário p
            t.setProx(p.getProx());
            p.setProx(t);
        }
        cont++; // incrementa contador
    }
    String impressao = "Candidato afiliado com sucesso!";
    return impressao;[/code]

Para o problema do nome, use comparação de strings sem case sensitive, use o equalsIgnoreCase(). Uma pergunta, você está fazendo sua própria lista, encadeada, e controlando na mão?

Consegui o//

usei o compareToIgnoreCase() e deu certo …valeeeu =D

to desenvolvendo um programinha que controla afiliacao de candidatos em partidos…
onde as listas ficam dentro de um vetor…e cada posicao do vetor contem uma lista…

ai atraves do main chamo os metodos da classe listaligada

Bom, não sei se no seu caso você tem alguma necessidade, obrigatoriedade de usar a lista do jeito que fez. Mas (caso não saiba) você tem estruturas de lista, entre outras, prontas para você usar.
Você fez a comparação dos nomes com compareTo. Minha sugestão é que faça comparação de strings com o método equals, mas usando o não case sensitive, que é o equalsIgnoreCase().

Exemplo:

String nome = "TESTE";
nome.equalsIgnoreCase("teste"); //o resultado desse teste é true pois ignora o case

Estude a API http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#equalsIgnoreCase(java.lang.String)
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html

Agora ta funfando certin :wink:
vo da uma olhada na API…valeu =D

agora como eu faco pra na hora da inserçao verificar se ja existe um numero igual cadastrado !?

Antes de inserir faça uma busca em sua lista pelo valor. Se for encontrado retorna erro e informa, caso contrário insere na lista e informa.

Hum sim
Aonde exatamente eu devo varrer !?

Nessa parte aqui:

NoLista t = new NoLista(f, null); //Varrer aqui while(p.getProx()!=null && f.getNome().compareToIgnoreCase(p.getInfo().getNome()) > 0)

Antes do primeiro while !?

Gabriel,

Se o número que você cadastra está no atributo nome que é acessado por f.getNome você verifica se for igual informa a mensagem que está cadastrado ou então coloca no loop um continue sem fazer nada.