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

"O a1 é equals ao Turini?" retorna false

Bom dia!

Seguindo a aula ao chegar no comparação entre variável "a1" e "turini" ainda me retorna como false ao invés de true como mostrado no vídeo, podem me ajudar?

Segue meu código: TestaCursoComAluno: package br.com.alura;

public class TestaCursoComAluno {

public static void main(String[] args) {
    Curso javaColecoes = new Curso("Dominando as coleções do Java", "Paulo Silveira");

    // javaColecoes.getAulas().add(new Aula("Trabalhando com ArrayList", 21));
    javaColecoes.adiciona(new Aula("Trabalhando com ArrayList", 21));
    javaColecoes.adiciona(new Aula("Criando uma Aula", 20));
    javaColecoes.adiciona(new Aula("Modelando com coleções", 24));

    Aluno a1 = new Aluno("Lucas Pennella", 1111);
    Aluno a2 = new Aluno("Vinicius Pennella", 1211);
    Aluno a3 = new Aluno("Renato Pennella", 1311);

    javaColecoes.matricula(a1);
    javaColecoes.matricula(a2);
    javaColecoes.matricula(a3);

    System.out.println("Todos alunos matriculados no curso: ");
    javaColecoes.getAlunos().forEach(a -> {
        System.out.println(a);
    });

    System.out.println("O aluno " + a1 + " está matrículado?");
    System.out.println(javaColecoes.estaMatriculado(a1));

    Aluno turini = new Aluno("Rodrigo Turini", 34672);
    System.out.println("E esse Turini, está matriculado?");
    System.out.println(javaColecoes.estaMatriculado(turini));

    System.out.println("O a1 é equals ao Turini?");
    System.out.println(a1.equals(turini));

    // Obrigatoriamente o seguinte é true:

    System.out.println(a1.hashCode() == turini.hashCode());

}

}

Aluno: package br.com.alura;

public class Aluno {

private String nome;
private int numeroMatricula;

public String getNome() {
    return nome;
}

public int getNumeroMatricula() {
    return numeroMatricula;
}

@Override
public boolean equals(Object obj) {
    Aluno outroAluno = (Aluno) obj;
    return this.nome.equals(outroAluno.nome);
}

@Override
public int hashCode() {
    return this.nome.charAt(0);
}

public Aluno(String nome, int numeroMatricula) {
    if (nome == null) {
        throw new NullPointerException("Nome não pode ser nulo");
    }
    this.nome = nome;
    this.numeroMatricula = numeroMatricula;
}

@Override
public String toString() {
    return "[Aluno: " + this.nome + ", Matrícula: " + this.numeroMatricula + "]";
}

}

2 respostas
solução!

OLá Lucas

Acredito que você tenha se esquecido de adicionar o "Rodigo Turini" pois você mudou o nome dos alunos. está assim :

Aluno a1 = new Aluno("Renato Pennella", 1311);

O certo seria adicionar as linhas abaixo:

Aluno a4 = new Aluno("Rodrigo Turini", 34672);
javaColecoes.matricula(a4);

Acredito também que você tenha se esquecido de mudar na "classe Aluno" o seguinte codigo

@Override
public int hashCode() {
    return this.nome.charAt(0);
}

o ".charAt(0)" PARA ".hashCode()"

    @Override
    public int hashCode() {
        return this.nome.hashCode();
    }

O codigo ficaria assim:

package br.com.alura;

public class testeforum {

    public static void main(String[] args) {
        Curso javaColecoes = new Curso("Dominando as coleções do Java", "Paulo Silveira");

        // javaColecoes.getAulas().add(new Aula("Trabalhando com ArrayList", 21));
        javaColecoes.adiciona(new Aula("Trabalhando com ArrayList", 21));
        javaColecoes.adiciona(new Aula("Criando uma Aula", 20));
        javaColecoes.adiciona(new Aula("Modelando com coleções", 24));

        Aluno a1 = new Aluno("Lucas Pennella", 1111);
        Aluno a2 = new Aluno("Vinicius Pennella", 1211);
        Aluno a3 = new Aluno("Renato Pennella", 1311);
        Aluno a4 = new Aluno("Rodrigo Turini", 34672);

        javaColecoes.matricula(a1);
        javaColecoes.matricula(a2);
        javaColecoes.matricula(a3);
        javaColecoes.matricula(a4);

        System.out.println("Todos alunos matriculados no curso: ");
        javaColecoes.getAlunos().forEach(a -> {
            System.out.println(a);
        });

        System.out.println("O aluno " + a4 + " está matrículado?");
        System.out.println(javaColecoes.estaMatriculado(a4));


        Aluno turini = new Aluno("Rodrigo Turini", 34672);
        System.out.println("E esse Turini, está matriculado?");
        System.out.println(javaColecoes.estaMatriculado(turini));

        System.out.println("O a4 é equals ao Turini?");
        System.out.println(a4.equals(turini));

        // Obrigatoriamente o seguinte é true:

        System.out.println(a4.hashCode() == turini.hashCode());

    }
}

Espero que tenha ajudado.

Bom dia Wyller Silveira Fernandes!

Deu certo, muito obrigado pela ajuda!

Atenciosamente, Lucas Pennella.