Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Como verificar um nome em uma array antes de adiciona-la

Bom dia Galera, estou criando uma lista de nomes e através de entrada via teclado, o nome escrito caso já esteja adicionado, não pode se repetir, não estou conseguindo fazer a verificação. Um exemplo quando insiro um nome, apos adiciona-lo, se tentar novamente coloca-lo o programa deve avisar que esse nome ja foi registrado. abaixo esta o que restou do codigo depois de varias tentativas.

for (int i = 0; i < lista.length; i++) {
                String insereNome = scanner.next();
                lista[i] = insereNome;

                if (lista.equals(insereNome)) {
                    System.out.println("ja existe esse nome");
                } else {
                    System.out.println("Registrado");
                }
            }
3 respostas
solução!

bom dia Walter,

o método equals não vai funcionar pra esse objetivo de verificar se existe a string na lista, ele somente valida o objeto 'lista' com o objeto que esta sendo passado como argumento.

acredito que vc vá precisar criar um método, onde vc percorra a lista e compare cada elemento da lista com o nome que deseja verificar.

Bom dia Walter,

Como o Thiago comentou, esse lista.equals vai verificar se a lista em questão é a mesma coisa internamente que a string, o que não faz muito sentido nesse caso.

O ideal realmente seria fazer um método que vai percorrer todas as posições já preenchidas da lista, e vendo a string de cada posição é igual à string que você acabou de ler. Ficaria algo como:

public static void main(String[] args) {

    Scanner scanner = new Scanner(new InputStreamReader(System.in));

    String[] lista = new String[10];

    for (int i = 0; i < lista.length; i++) {
        String insereNome = scanner.next();

        if (procuraNomeNaLista(lista, i, insereNome)) {
            System.out.println("ja existe esse nome");
        } else {
            lista[i] = insereNome;
            System.out.println("Registrado");
        }
    }

}

private static Boolean procuraNomeNaLista(String[] lista, int posicaoAtual, String nome) {
    for(int i = 0; i < posicaoAtual; i++) {
        if(lista[i].equals(nome)) {
            return true;
        }
    }

    return false;
}

Perceba que também mudei um pouco a função que adiciona na lista, porque pelo que eu entendi, primeiro precisa verificar se o nome já existe na lista, e apenas adicioná-lo caso não exista. Outro ponto a destacar é que passei para a função de verificação o último espaço preenchido do array, pois caso não o fizesse, estaria acessando posições não preenchidas, causando uma NullPointerException.

Espero ter ajudado, abraços!

Obrigado amigos!, me ajudaram muito! tirou todas as minhas duvidas! agradeço demais!