Array [RESOLVIDO]

9 respostas
Jsquare

Estou com dúvidas para comparar os nomes no array… ele sempre retorna a condição true

public class Aluno {

    private String nome;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @Override
    public String toString(){
        return this.nome;
    }

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

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 29 * hash + (this.nome != null ? this.nome.hashCode() : 0);
        return hash;
    }

}
public class ArmazenandoAlunoNoArray {

    private String nomes[] = {"Ana, An, Bruna"};

    public boolean adicionaAluno(Aluno aluno) {
        for (int j = 0; j < this.nomes.length - 2; j++) {
            for (int i = 0; i < nomes.length - 1; i++) {
                if (nomes[j].compareTo(nomes[i + 1]) > 0) {
                    return false;

                }
            }

        }
        return true;
    }

    @Override
    public String toString() {
        return Arrays.toString(nomes);
    }
}
public static void main(String[] args) {

        Aluno alunoUm = new Aluno();
        Aluno alunoDois = new Aluno();
        Aluno alunoTres = new Aluno();
        ArmazenandoAlunoNoArray diag = new ArmazenandoAlunoNoArray();

        ArmazenandoAlunoNoArray lista = new ArmazenandoAlunoNoArray();
        lista.adicionaAluno(alunoUm);
        lista.adicionaAluno(alunoDois);
        lista.adicionaAluno(alunoTres);

        System.out.println(lista);


        if (diag.adicionaAluno(alunoUm) == true && diag.adicionaAluno(alunoDois) == true && diag.adicionaAluno(alunoTres)) {
            System.out.println("Existe Aluno com o nome repetido");
        }else{
            System.out.println("Não existe Aluno repetido");
        }


    }
}

9 Respostas

viniciusalvess

Arrays.equals(Object[] a, Object[] a2);
Returns true if the two specified arrays of Objects are equal to one another.

Jsquare

viniciusalvess:
Arrays.equals(Object[] a, Object[] a2);
Returns true if the two specified arrays of Objects are equal to one another.

fazer a comparação dentro do for??? … ao fazer, é apresentado um erro no “equals”

J

É a parte da declaração de nomes.

private String nomes[] = {"Ana, An, Bruna"};

Veja que você colocou apenas 2 aspas. O Java está considerando uma String só. Que é essa “Ana, An, Bruna”.

O certo é

String nomes[] = {"Ana", "An", "Bruna"};
Jsquare

[quote=javablue]É a parte da declaração de nomes.

private String nomes[] = {"Ana, An, Bruna"};

Veja que você colocou apenas 2 aspas. O Java está considerando uma String só. Que é essa “Ana, An, Bruna”.

O certo é

String nomes[] = {"Ana", "An", "Bruna"};

Já foi modificado… mesmo assim não estou conseguindo obter êxito no resultado…

J

Bom, eu não entendi muito bem.

Assim…você recebe um parâmetro aluno e não usa ele. Acho que o correto é ter um ArrayList com todos os alunos e depois varrer o ArrayList para descobrir se ele já foi adicionado.

Mas para resolver o seu problema atual, acho que você teria que trocar o compareTo por equals.

Mesmo assim, precisa de bastante refatoração esse seu for, na minha opinião pelo menos

Jsquare

Bom… gostaria de agradecer aos amigos do fórum prestaram algum tipo de ajuda olhando meu código… fiz algumas alterações e estou postando o código completo e [RESOLVIDO]

Código: informa se este vetor contém algum nome repetido

public class Aluno {

    private String nome;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @Override
    public String toString() {
        return this.nome;
    }
}
public class ArmazenandoAlunoNoArray {

    private Aluno aluno;
    private String nomes[] = {"Ana", "Carla", "Bruno", "Camila"};

    public boolean adicionaAluno(Aluno aluno) {


        for (int i = 0; i < this.nomes.length - 1; i++) {
            for (int j = i + 1; j < this.nomes.length; j++) {

                if (nomes[i].equals(nomes[j])) {
                    return true;
                }
            }
        }
        return false;
    }

    @Override
    public String toString() {
        return Arrays.toString(nomes);
    }
}
public static void main(String[] args) {

        Aluno aluno = new Aluno();

        ArmazenandoAlunoNoArray diag = new ArmazenandoAlunoNoArray();
        ArmazenandoAlunoNoArray lista = new ArmazenandoAlunoNoArray();
        System.out.println(lista);

        if (diag.adicionaAluno(aluno) == true) {
            System.out.println("Existe Aluno com o nome repetido!!");
        } else {
            System.out.println("Não existe Aluno com o nome repetido!!");
        }
    }
}

Abraços…

O

Amigos…
Para que serve isto :

public String toString() {   
        return Arrays.toString(nomes);   
    }

Obrigado !!

Jsquare

ozjunior:
Amigos…
Para que serve isto :

public String toString() {   
        return Arrays.toString(nomes);   
    }

Obrigado !!

O método toString() retorna uma descrição do objeto em questão… neste caso será útil para imprimir os alunos no resultado…

worlock257

ozjunior:
Amigos…
Para que serve isto :

public String toString() {   
        return Arrays.toString(nomes);   
    }

Obrigado !!

Boa pergunta, tbm ñ sei para que serve isso.

Criado 17 de abril de 2011
Ultima resposta 18 de abr. de 2011
Respostas 9
Participantes 5