Sim, isto deve resolver, mas há diversas soluções:
public boolean equalsNome (String nome) {
for (int i = 0; i < this.nome.length(); i++) {
if (this.nome.charAt(i)*.equals(*nome.charAt(i))*)* return true;
}
return false;
}
SEMPRE que você quiser saber se dois objetos são de valores iguais, chame o
equals. == ou != só serve para dizer se são o mesmo objeto (se estão na
mesma posição de memória) e não para dizer se são iguais (podem ser dois
objetos distintos, mas iguais em valor). Isso é matéria e pode cair em
prova. Se não entendeu com esta explicação de uma linha e meia, pergunte.
Se você implementar a sugestão do Thiago, vc pode usar o contains no lugar
do seu método equalsNome:
todasPessoas.contains(pessoa)
ou
todasPessoas.contains(new Pessoa(nome))
e já saberá se existe ou não uma pessoa com aquele nome.
Leia o Javadoc dos métodos equals e hashCode em Object. Se vc mudar um, terá
que mudar o outro. Se dois objetos forem iguais segundo o equals, eles devem
retornar o mesmo hashCode. Vc tb tem a opção de clicar com o botão direito
no código de Pessoa, ir no menu source e selecionar generate equals and
hashcode. O Eclipse faz pra vc. Mas não deixe de ler. É matéria e pode cair
em prova.
Para saber se existe uma pessoa com aquele nome na coleção:
public boolean equalsNome (String nome) {
for (Pessoa p : todasPessoas) {
if (p.getNome.equals(nome)) return true;
}
return false;
}
Em String há os métodos equals e equalsIgnoreCase para vc não ter que fazer
este for que vc fez.
E seu método tem outro problema. Sempre que this.nome for mais longo que
nome, vc vai ter uma exceção.
Abraço
Peter P. Lupo
http://craftnicely.blogspot.com - http://sites.google.com/site/pplupo
<http://sites.google.com/site/pplupo>MPS.BR Authorized Implementation
Practitioner<http://www.softex.br/mpsbr/_profissionais/MPS.BR_certificados_de_arovacao_prova_P2-MPS.BR.pdf>-
Certified
ScrumMaster <http://www.scrumalliance.org/pages/certified_scrummaster>
<http://www.scrumalliance.org/pages/certified_scrummaster>Oracle Certified
Associate, Java SE 5/SE
6<http://in.sun.com/training/certification/java/scja.xml> -
Java Black Belt <http://www.blackbeltfactory.com/ui#!User/pplupo>
<http://www.blackbeltfactory.com/ui#!User/pplupo>+55 (021) 81742487
2011/4/10 Thiago Caldeira de Lima <[email protected]>
> Vc pode usar " ob.equals(ob2) ", talvez precise fazer um override do
> método equals da classe Pessoa.
>
> public boolean equals(pessoa p){
>
> return this.nome.equals(p.nome);
> }
>
> isso deve resolver =]
>
> public boolean equals(Object obj) {
>
>
> 2011/4/10 Lucian Sturião <[email protected]>
>
>> Estou tentando fazer um programa de cadastro de pessoas em Java. No meu
>> programa cada pessoa teria: nome, reserva, pagamentos 1 2 e 3, e mais alguns
>> métodos/atributos.
>> Eu acho que consegui fazer uma Arraylist com esses objetos, não sei se fiz
>> certo:
>>
>> Declarei:
>>
>> ArrayList<Pessoa> todasPessoas = new ArrayList<Pessoa>();
>>
>> e depois quando adiciono a pessoa, faço:
>>
>> todasPessoas.add(new Pessoa("nome"));
>>
>> Quando quero procurar uma pessoa da arraylist, eu fiz um método que usa um
>> for e procura em todos objetos da arraylist pelo nome dado, usando o método
>> equalsNome (abaixo)... mas isso está me parecendo muito estranho, e não está
>> dando certo.
>> Fiz um método equalsNome na Classe Pessoa, pra receber um nome e dizer se
>> este é o nome da pessoa:
>>
>> public boolean equalsNome (String nome) {
>> for (int i = 0; i < this.nome.length(); i++) {
>> if (this.nome.charAt(i) != nome.charAt(i)) return false;
>> }
>> return false;
>> }
>>
>>
>> Alguém pode me ajudar? Procurei na Classe ArrayList na API e não encontrei
>> o que eu queria.
>> O que estou fazendo errado, e tem algum jeito de fazer isso mais simples?
>>
>> Obrigado.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Comp 2 - Geral" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/comp2-geral?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Comp 2 - Geral" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/comp2-geral?hl=en.
>
--
You received this message because you are subscribed to the Google Groups "Comp
2 - Geral" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/comp2-geral?hl=en.