É 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.
