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

Erro NullPointerException Ex. 9 Aula 5 Java 3

Sobrescrevi o método compareTo na classe Conta para comparar os nomes dos clientes da seguinte forma:

    @Override
    public int compareTo(Conta outra) {
        return this.nome.compareTo(outra.nome);
    }

Em seguida, na classe TestaOrdenacao tentei imprimir o nome dos clientes em ordem:

public class TestaOrdenacao {

    public static void main(String[] args) {

        List<Conta> contas = new ArrayList<>();
        Random random = new Random();

        Conta c1 = new ContaCorrente();
        c1.setSaldo(random.nextInt(10) + random.nextDouble());
        c1.setNome("João");
        contas.add(c1);


        Conta c2 = new ContaCorrente();
        c2.setSaldo(random.nextInt(10) + random.nextDouble());
        c2.setNome("Carlos");
        contas.add(c2);


        Conta c3 = new ContaCorrente();
        c3.setSaldo(random.nextInt(10) + random.nextDouble());
        c3.setNome("Roberto");
        contas.add(c3);

        Collections.sort(contas);

        for(Conta conta : contas) {
            System.out.println(conta);
        }

    }

}

Ao rodar o main, aparece no console o seguinte erro:

Exception in thread "main" java.lang.NullPointerException at br.com.empresa.banco.conta.Conta.compareTo(Conta.java:77) at br.com.empresa.banco.conta.Conta.compareTo(Conta.java:1) at java.util.ComparableTimSort.countRunAndMakeAscending(Unknown Source) at java.util.ComparableTimSort.sort(Unknown Source) at java.util.Arrays.sort(Unknown Source) at java.util.Arrays.sort(Unknown Source) at java.util.List.sort(Unknown Source) at java.util.Collections.sort(Unknown Source) at br.com.empresa.banco.TestaOrdenacao.main(TestaOrdenacao.java:28)

Por fim, o código compila normalmente, o eclipse não acusa erro algum em nenhuma das classes. Porque está ocorrendo a Exception?

2 respostas

O erro é um NullPointerException, algum nome de uma conta está nulo, mas olhando seu código não consegui perceber de cara. Sugiro da uma debugada, pode colocar um System.out.println ali no compareTo e imprimir os nomes para tentar achar.

solução!

Descobri onde estava o erro, havia uma parte do código que não servia para o exercício e eu esqueci de "comentar" ela. Obrigado!