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.
