public static Pessoa procurarPessoa (String nome, ArrayList<Pessoa> lista) {
Pessoa lugar = null;
for (int i = 0; i < lista.size(); i ++)
{
if (nome.equalsIgnoreCase(lista.get(i).getNome())) {
lugar = lista.get(i);
break;
}
}
return lugar;
}
Se o nome da pessoa é joaozinho por exemplo, e eu procuro por joao, o método
retorna o lugar do joaozinho e dá uma exception.
Em 10 de abril de 2011 12:02, Peter P. Lupo <[email protected]> escreveu:
> Como vc fez?
>
> Não é pra usar no if dentro do for, é pra usar em substituição ao for,
> comparando os nomes diretamente e não seus caracteres.
>
> 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 Lucian Sturião <[email protected]>
>
>> É que eu estava usando o equalsIgnoreCase (dica de outra lista) e mesmo
>> assim deu a Exception quando o nome do objeto era maior que o nome
>> procurado.
>>
>> Em 10 de abril de 2011 11:43, Peter P. Lupo <[email protected]> escreveu:
>>
>> Depende. Se cada caractere for instância de Character, é um objeto. Se for
>>> simplesmente um valor tipo char, é um tipo primitivo. Assim vc tb vai
>>> encontrar Integer/int, Double/double, Float/float, Boolean/boolean, etc...
>>> Neste caso aí, cada caractere é um char mesmo, eu acho. Me equivoquei no
>>> primeiro exemplo.
>>>
>>> Sim, comparando os tamanhos vc se livra do problema mas vc tb pode
>>> simplesmente usar equals ou equalsIgnoreCase de String para comparar os
>>> nomes, sem ter que implementar o for vc mesmo.
>>>
>>> Assim fica mais claro o que vc está querendo fazer além de vc não perder
>>> tempo fazendo algo com bugs que já existe feito e testado.
>>>
>>> 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 Lucian Sturião <[email protected]>
>>>
>>>> Cada caractere também é um objeto?
>>>> Então será que usando já uma condição pra comparar o tamanho dos nomes
>>>> logo no começo contornaria essa exceção?
>>>>
>>>> Em 10 de abril de 2011 11:00, Peter P. Lupo <[email protected]>escreveu:
>>>>
>>>> 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.
>>>>>
>>>>
>>>> --
>>>> 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.
>>
>
> --
> 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.