Se vc quer que Joaozinho seja retornado quando vc procura por Joao, deveria usar o startsWith e não o equals. Se vc usa o equals, não retorna o Joaozinho, retorna null mesmo. Mais um indício de que a implementação está correta e o erro está depois.
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 Peter P. Lupo <[email protected]> > Bom, vc não está retornando o lugar, está retornando a pessoa. :-) > > Mas eu não acredito que a exceção seja dentro deste método. Provavelmente > quando não acha ele retorna null e quando vc tenta fazer algo com o retorno > dá NullPointerException, não? > > Não estou vendo nada errado com o método. > > Até pq, se retorna o lugar e depois dá o erro, o método já foi terminado > (termina quando retorna), logo o erro é depois do método e não nele. > > 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]> > >> 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. >> > > -- 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.
