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.
