Compare dois objetos sempre com .equals (no caso de String também tem o equalsIgnoreCase). Use == apenas para saber se é o mesmo objeto, não para saber se os objetos são iguais.
Como eu expliquei, imagina por exemplo que o length seja 0. Não entra no for. Não teria um retorno. Reveja a comparação e imprima os valores sendo comparados no if dentro do for a fim de verificar se são realmente iguais. Assim você se certificará sobre a validade da comparação que está fazendo. Lembre-se sempre disso. :-P Uma vez funcionando me avise. Tenho umas dicas que não quero dar agora pra não contaminar a sua solução. ;-) Abraço Peter P. Lupo http://craftnicely.blogspot.com - http://sites.google.com/site/pplupo MPS.BR Authorized Implementation Practitioner - Certified ScrumMaster Sun Certified Java Associate - Java Brown Belt +55 (021) 81742487 2010/4/20 Romulo Freires <[email protected]> > Fiz como o professor falou mas continua o mesmo erro > > > public static Cargo *obtem(String nome*){ > Cargo [] vet = Cargo.values(); > for (int i = 0; i< vet.length; i++) { > if (nome.toUpperCase() != vet[i].toString()){ > return null; > } > else { > return vet[i]; > } > } > > } > > O eclipese acusa erro na parte sublinhada! E ele "corrige" o erro colocando > um Return Null > no final do método, só que na ora do teste ele não retorna nada e quando > "printa" ele mostra o null. > > Segue como o código depois que eclipse "corrige" > > > public static Cargo obtem(String nome){ > Cargo [] vet = Cargo.values(); > for (int i = 0; i< vet.length; i++) { > if (nome.toUpperCase() != vet[i].toString()){ > return null; > } > else { > return vet[i]; > } > } > return null > } > Em 20 de abril de 2010 15:21, Miguel Jonathan <[email protected]>escreveu: > > Hoje na aula discutimos muito esse método. >> A sua classe Testando deveria salvar o que o método retorna, ou pelo menos >> imprimir, algo como: >> >> >> public class Testando { >> public static void main(String[] args) { >> >> System.out.println(Cargo.obtem("boy")); >> >> } >> >> } >> >> Como explicado na aula, a maneira mais fácil de resolver essa parte da >> lista é fazer um método que faça: >> >> public static Cargo obtem(String s) { >> a) transforma a string s em maiúsculas, usando método da classe String >> b) cria uma variável tipo vetor de Cargo, e faz ela apontar para o vetor >> que contém todos os objetos do enum >> (lembra do método values()?) >> c) procure no vetor a posição do objeto que ao receber toString() >> retorna a mesma string s >> d) se achar, o valor dessa posição deve ser retornado pelo método. >> e) se não achar, seu método deve retornar null. >> } >> >> Jonathan >> >> 2010/4/20 Peter P. Lupo <[email protected]> >> >> Se não retorna é pq não entra no if, certo? >>> Logo, o que na comparação seu if pode estar errado? >>> Pq vc não tenta imprimir o que é retornado por valueOf? >>> >>> Abraço >>> >>> Peter P. Lupo >>> http://craftnicely.blogspot.com - http://sites.google.com/site/pplupo >>> MPS.BR Authorized Implementation Practitioner - Certified ScrumMaster >>> Sun Certified Java Associate - Java Brown Belt >>> +55 (021) 81742487 >>> >>> >>> 2010/4/20 Romulo Freires <[email protected]> >>> >>> public static Cargo obtem(String nome){ >>>> nome = nome.toUpperCase(); >>>> if (valueOf(nome) == BOY);{ >>>> return BOY ; >>>> >>>> Com isso os erros de cima pararam mas quando eu faço o teste >>>> >>>> public class Testando { >>>> >>>> public static void main(String[] args) { >>>> // TODO Auto-generated method stub >>>> >>>> Cargo.obtem("boy"); >>>> >>>> } >>>> >>>> } >>>> >>>> ele não retorna nada e logico que se eu coloco algo do tipo >>>> Cargo.obtem("by") ocorre um erro devido a própria condição. >>>> >>>> O que eu quero saber é pq ele não retorna nada. >>>> >>>> abraços galera. >>>> >>>> Em 19 de abril de 2010 23:13, Peter P. Lupo <[email protected]>escreveu: >>>> >>>>> O compilador checa se vc está retornando algo compatível (do mesmo tipo >>>>> ou um subtipo) com o valor de retorno. Null vai servir em todos os casos >>>>> onde o retorno for um objeto. >>>>> >>>>> Se vc fez um desvio (um if por exemplo), o compilador vai verificar se >>>>> o seu código retorna algo mesmo que não entre no desvio. >>>>> >>>>> Então se vc fizer >>>>> >>>>> if (...) { >>>>> return BOY; >>>>> } >>>>> >>>>> o compilador irá reclamar pois caso não entre no if, não haverá >>>>> retorno. Uma solução é acrescentar um return fora do if ou no else. >>>>> >>>>> Abraço >>>>> >>>>> Peter P. Lupo >>>>> http://craftnicely.blogspot.com - http://sites.google.com/site/pplupo >>>>> MPS.BR Authorized Implementation Practitioner - Certified ScrumMaster >>>>> Sun Certified Java Associate - Java Brown Belt >>>>> +55 (021) 81742487 >>>>> >>>>> >>>>> 2010/4/19 Romulo Freires <[email protected]> >>>>> >>>>>> Tô tendo problemas com a assinatura "public static Cargo obtem(String >>>>>> nome", TALVEZ SEJA UMA COISA BOBA, mas o fato é que eu fiquei preso >>>>>> aí. >>>>>> >>>>>> segue a parte que não estou conseguindo implementar! >>>>>> >>>>>> >>>>>> "e) Deve haver um método de classe para obter a instância do enum a >>>>>> partir da string do seu nome, >>>>>> com a assinatura: public static Cargo obtem(String nome) >>>>>> Por exemplo: Cargo.obtem("boy") deve retornar a referência da >>>>>> instância BOY. >>>>>> OBS1: o argumento desse método não precisa estar necessariamente em >>>>>> maiúsculas, o seu método >>>>>> deve fazer a conversão. >>>>>> OBS2: caso o argumento em maiúsculas não corresponda a nenhum enum com >>>>>> esse nome, o >>>>>> método deve retornar null." >>>>>> >>>>>> Devido a essa Assinatura eu estou tendo problemas com o RETURN. >>>>>> >>>>>> O eclipse cobra um return null e eu não estou conseguindo me livrar >>>>>> disso, mesmo com um método pronto. >>>>>> >>>>>> Se alguém puder ajudar eu agradeço muito. >>>>>> >>>>>> Abraços galera. >>>>>> >>>>>> -- >>>>>> 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]<comp2-geral%[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]<comp2-geral%[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]<comp2-geral%[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]<comp2-geral%[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]<comp2-geral%[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]<comp2-geral%[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.
