[RESOLVIDO] Problemas com instrução "return" (recursividade)  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
danielpk7
Thread.start()

Membro desde: 03/07/2007 20:44:15
Mensagens: 33
Offline

Olá pessoal, estou com um problema aqui, tenho um método q retorna um String, dentro desse metodo tem um laço "for" e dentro desse "for", se eu acho um determinado valor eu retorno ele com "return valor" acontece q ao invés de sair do metodo ele vai pra linha subsequente ao "for" e continua dentro do método. No caso o "return" tah com complexo de "break", to achando mto estranho pois nunca vi isso, ou eu desaprendi a programar ou o meu java tah louco...hehehe

Vou postar o código abaixo:


Olhando no código, qdo ele entra na linha 49 ou 51 ao invés de sair do metodo ele passa a executar a linha 56 ainda dentro do método e no fim u único return q realmente sai do metodo eh o "return null" da linha 63.

Desde ja agradeço a atenção.

This message was edited 2 times. Last update was at 05/05/2009 09:00:38

rodrigo.bossini
GUJ Master
[Avatar]

Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline

Tem um monte de If's antes de chegar no return. Com certeza um deles está dando false sem você perceber.

Creio que esses dois sejam os suspeitos:

if (field.length() > 0) {
if(nomeCampo.toLowerCase().equals(field)){

This message was edited 1 time. Last update was at 04/05/2009 14:14:10


http://www.rodrigobossini.com.br/

Meu Twitter:@rodrigobossini
Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo?
Pedrosa
JWizard
[Avatar]

Membro desde: 13/07/2005 13:08:08
Mensagens: 2505
Localização: São Paulo - Brasil
Offline

Use o debug da sua IDE e veja o que realmente esta acontecendo!
danielpk7
Thread.start()

Membro desde: 03/07/2007 20:44:15
Mensagens: 33
Offline

Pedrosa wrote:Use o debug da sua IDE e veja o que realmente esta acontecendo!

Sim ja debuguei inúmeras vezes antes de postar, ele entra na linha onde está o "return" mas como disse, ao inves de sair do metodo ele pula pra fora do "for", constatei isso debugando...

rod.attack wrote:Tem um monte de If's antes de chegar no return. Com certeza um deles está dando false sem você perceber.

Debugando ja vi q ele não entra certinho nesses ifs e chega na instrução return.
jamikas
Debugger
[Avatar]

Membro desde: 15/12/2006 10:58:30
Mensagens: 58
Offline

Tem que inserir o comando "break;" após o return;

This message was edited 1 time. Last update was at 04/05/2009 14:34:05


Alexandre Soares da Silva
Seja MultiThread, mas pense Mono.

http://javaloko.blogspot.com
[WWW] [MSN]
ignacio83
Java Ninja
[Avatar]

Membro desde: 16/03/2007 10:46:06
Mensagens: 253
Localização: São Paulo
Offline

Tem que inserir o comando "break;" após o return;

Não tem não...

Algumas vezes passei por situações parecidas e na verdade o que acontece é que a classe não tinha sido recompilada, ai debug mostra as linhas, mas não está executando aquelas linhas...

Tente fazer um rebuild all. O Eclipse tem uma opção de Rebuild Auto, veja se está marcada...

This message was edited 1 time. Last update was at 04/05/2009 14:41:20


André de Fontana Ignacio
[MSN]
danielpk7
Thread.start()

Membro desde: 03/07/2007 20:44:15
Mensagens: 33
Offline

jamikas wrote:Tem que inserir o comando "break;" após o return;

Eu até pensei em fazer isso jamikas, dar um break e usar uma variável String de retorno retornando ao fim do método mas como eu uso recursão isso não ficaria mto bonito, teria q fazer mais algum teste sem nescessidade.

This message was edited 1 time. Last update was at 04/05/2009 14:45:25

danielpk7
Thread.start()

Membro desde: 03/07/2007 20:44:15
Mensagens: 33
Offline

ignacio83 wrote:
Algumas vezes passei por situações parecidas e na verdade o que acontece é que a classe não tinha sido recompilada, ai debug mostra as linhas, mas não está executando aquelas linhas...

Tente fazer um rebuild all. O Eclipse tem uma opção de Rebuild Auto, veja se está marcada...


Tentei dar um Clean e depois um Build no projeto e nada, inclusive o Rebuild Auto ja estava marcado...
rodrigo.bossini
GUJ Master
[Avatar]

Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline

danielpk7 wrote:
rod.attack wrote:Tem um monte de If's antes de chegar no return. Com certeza um deles está dando false sem você perceber.

Debugando ja vi q ele não entra certinho nesses ifs e chega na instrução return.


Se ele não entra nesses if's então ele nunca chega no return!!

http://www.rodrigobossini.com.br/

Meu Twitter:@rodrigobossini
Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo?
danielpk7
Thread.start()

Membro desde: 03/07/2007 20:44:15
Mensagens: 33
Offline

rod.attack wrote:
danielpk7 wrote:
rod.attack wrote:Tem um monte de If's antes de chegar no return. Com certeza um deles está dando false sem você perceber.

Debugando ja vi q ele não entra certinho nesses ifs e chega na instrução return.


Se ele não entra nesses if's então ele nunca chega no return!!


Foi mal cara, erro de digitação, quis dizer q ele entra certinho nos ifs, chega na linha do return e inexplicavelmente não sai do método, sai somente do "for" como se fosse um break.
danielpk7
Thread.start()

Membro desde: 03/07/2007 20:44:15
Mensagens: 33
Offline

Consegui resolver o problema. Como ja esperado, não era loucura do java, acontece q na linha 57 eu faço uma recursão o q coloca o mesmo metodo novamente na pilha de execução, na segunda chamada do método eu dou um return e ao invez de voltar pra classe q chamou o método ele volta pra ele mesmo normal pois foi ele q se chamou recursivamente. Resolvi colocando um return na linha 57 ficando assim: "return getCampoHibernate(classe+"Id", nomeCampo);". Agora q vi a burrice q tinha feito.
Obrigado a todos.

This message was edited 1 time. Last update was at 05/05/2009 09:00:20

 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team