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.

Responder a