Return null by breaking the code

Asked

Viewed 222 times

4

When I search right the name of the person on the list of people it returns the person but when the return is null it breaks the loop of the code and shows it:

Exception in thread "main" java.lang.Nullpointerexception At Cadastropessoa.main(Cadastropessoa.java:59) ".

What to do to fix it?

public Pessoa pesquisar(String umNome) {
        for (Pessoa umaPessoa: listaPessoas) {
            if (umaPessoa.getNome().equalsIgnoreCase(umNome)) return umaPessoa;
        }
        return null;
    }

else if (entradaTeclado.equalsIgnoreCase("pesquisar")){

        System.out.println("Digite o nome da pessoa que você quer pesquisar:");
        entradaTeclado = leitorEntrada.readLine();
        String umNome = entradaTeclado;

        //buscando pessoa na lista de pessoas
        Pessoa umaPessoa = umControle.pesquisar(umNome);
        System.out.println(umaPessoa);
        if (!umaPessoa.equals(null)) {
            System.out.println("\n******** Pessoa encontrada com sucesso ********\n");
        }

4 answers

2

You can only call a method in the variable umaPessoa if its value is not zero - inclusive umaPessoa.equals(null). The correct way to compare a variable to null is by using the (des)equality operator (== or !=):

if ( umaPessoa != null ) {

2


No if try to put

if (umaPessoa != null)


'Cause it must be the equals that are breaking.

2

equals is a method like any other.

Just as x.foo(y) causes an exception when x = null, also x.equals(y) what makes.

The correct way to check if an object is null is:

x == null

So in this case:

if (umaPessoa != null) {
    System.out.println("\n******** Pessoa encontrada com sucesso ********\n");
}

2

It’s unclear from your question what line 59 is, but I assume it’s the following:

if (umaPessoa.getNome().equalsIgnoreCase(umNome)) return umaPessoa;

So you should, as the friend @mgibsonbr put switch to the following form:

public Pessoa pesquisar(String umNome) {
        for (Pessoa umaPessoa: listaPessoas) {
            if ( umaPessoa != null ) {
                if (umaPessoa.getNome().equalsIgnoreCase(umNome)) return umaPessoa;
            }
        }
        return null;
    }

and in the other code, as the friend @luiscubal put

else if (entradaTeclado.equalsIgnoreCase("pesquisar")){

        System.out.println("Digite o nome da pessoa que você quer pesquisar:");
        entradaTeclado = leitorEntrada.readLine();
        String umNome = entradaTeclado;

        //buscando pessoa na lista de pessoas
        Pessoa umaPessoa = umControle.pesquisar(umNome);
        System.out.println(umaPessoa);
        if (umaPessoa != null) {
            System.out.println("\n******** Pessoa encontrada com sucesso ********\n");
        }
  • Indeed, if there is a possibility of listaPessoas have null elements, so this test is necessary. But as the OP said "when the return is null" I and the others assumed that the exception was outside the method.

  • The question is that it does not show what the list is right. If it is an Arraylist I think it would be okay, but a common array would give problem.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.