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.
