| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 08:45:52
|
rconde
HelloWorld
![[Avatar]](/images/avatar/8316768bb07f4a490dd9bbcb4894a788.png)
Membro desde: 07/01/2009 08:38:53
Mensagens: 13
Offline
|
Olá a todos. Sou novo por aqui!
Bem, a dúvida é a seguinte:
Um método em java que não seja um void, termina sempre com um comando return certo?
É que estou a trabalhar num programa que faz uma sequência grande de if, nessa sequência em cada instrução, em vez do else foi sempre posto um return, no entanto, quando o programa é executado apresenta falhas, nomeadamente, no último if em vez de fazer o return do mesmo e terminar o método, continua e faz um return errado.
Se alguém pudesse ajudar...
This message was edited 1 time. Last update was at 07/01/2009 08:48:36
|
RConde |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 08:50:43
|
Mikhas
Virtual Machine Man
![[Avatar]](/images/avatar/4388a23da67b154b780b78dd7ea4636e.jpg)
Membro desde: 17/06/2008 11:10:50
Mensagens: 677
Localização: São Paulo
Offline
|
Posta um trecho do seu codigo
|
Refractor 1.6 - Easy reflection framework
Agora muito mais rapido!
Raze - The fastest CSS selector engine
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 09:02:49
|
rconde
HelloWorld
![[Avatar]](/images/avatar/8316768bb07f4a490dd9bbcb4894a788.png)
Membro desde: 07/01/2009 08:38:53
Mensagens: 13
Offline
|
O problema é que ele executa o que está dentro do último if, mas não faz o return e acaba depois por executar um dos return que está de fora return (array1[ai].Metodo(parametro)).
This message was edited 1 time. Last update was at 07/01/2009 09:04:49
|
RConde |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 09:13:03
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Como não faz o return? Pegue esse seu programa e execute-o em uma IDE qualquer (Eclipse, NetBeans). Você vai ver que ele tem de sair do seu método pelo return de qualquer jeito; provavelmente é sua condição que está errada.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 09:15:33
|
rconde
HelloWorld
![[Avatar]](/images/avatar/8316768bb07f4a490dd9bbcb4894a788.png)
Membro desde: 07/01/2009 08:38:53
Mensagens: 13
Offline
|
Estou a utilizar o eclipse, ele faz um return, mas não é o return esperado, é um dos que já está fora da condição. Foi mesmo por estranhar que decidi postar, porque já estou há dois dias a olhar para isto, a fazer testes e não há forma de atinar com isto.
This message was edited 1 time. Last update was at 07/01/2009 09:16:16
|
RConde |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 09:19:48
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Se estás a lidar (ou a pelejar) com o Eclipse, experimenta efetuar um "refresh" no seu projecto, para que ele reconstrua o seu programa. Pode ser que estejas a tentar depurar código que não bate com os ficheiros .class que foram gerados e estão desactualizados; já tive muitos problemas com isso e sempre efetuo um "rebuild" se estou com qualquer dúvida.
Minha esposa é mais radical e, quando está a depurar programas no Eclipse, sempre efetua o "rebuild" e vai tomar um cafezinho, não importando que alteração ela efetuou.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 09:29:58
|
Mikhas
Virtual Machine Man
![[Avatar]](/images/avatar/4388a23da67b154b780b78dd7ea4636e.jpg)
Membro desde: 17/06/2008 11:10:50
Mensagens: 677
Localização: São Paulo
Offline
|
rconde wrote:
O problema é que ele executa o que está dentro do último if, mas não faz o return e acaba depois por executar um dos return que está de fora return (array1[ai].Metodo(parametro)).
Que tipo de dados é o array1[ai].Metodo(parametro) ?
|
Refractor 1.6 - Easy reflection framework
Agora muito mais rapido!
Raze - The fastest CSS selector engine
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 09:33:21
|
rconde
HelloWorld
![[Avatar]](/images/avatar/8316768bb07f4a490dd9bbcb4894a788.png)
Membro desde: 07/01/2009 08:38:53
Mensagens: 13
Offline
|
Sim, é um método booleano!
thingol wrote:Se estás a lidar (ou a pelejar) com o Eclipse, experimenta efetuar um "refresh" no seu projecto, para que ele reconstrua o seu programa. Pode ser que estejas a tentar depurar código que não bate com os ficheiros .class que foram gerados e estão desactualizados; já tive muitos problemas com isso e sempre efetuo um "rebuild" se estou com qualquer dúvida.
Minha esposa é mais radical e, quando está a depurar programas no Eclipse, sempre efetua o "rebuild" e vai tomar um cafezinho, não importando que alteração ela efetuou.
Como faço o rebuild?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 09:33:32
|
marcobiscaro2112
JWizard
Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline
|
thingol wrote:Se estás a lidar (ou a pelejar) com o Eclipse, experimenta efetuar um "refresh" no seu projecto, para que ele reconstrua o seu programa. Pode ser que estejas a tentar depurar código que não bate com os ficheiros .class que foram gerados e estão desactualizados; já tive muitos problemas com isso e sempre efetuo um "rebuild" se estou com qualquer dúvida.
Minha esposa é mais radical e, quando está a depurar programas no Eclipse, sempre efetua o "rebuild" e vai tomar um cafezinho, não importando que alteração ela efetuou.
Não entendi o porque do 'pelejar'. Afinal, para que pelejar com a IDE mais usado (e a melhor, diga-se de passagem) do mercado. Mas quando ao rebuild, não é má idéia. Outra coisa, selecione todo o seu código e pressione Ctrl+I, para identar corretamente seu código e ficar mais fácil de entender qual return corresponde a determinado if.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 09:35:49
|
marcobiscaro2112
JWizard
Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline
|
Como faço o rebuild?
Clique com o botão direito sobre o projeto. Selecione 'Refresh'. Depois clique novamente com o botão direito e clique em 'Build Project'.
This message was edited 1 time. Last update was at 07/01/2009 09:36:11
|
Marco Biscaro.
Seja livre!
Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 09:49:05
|
sf.marcius
JavaGuru
![[Avatar]](/images/avatar/087d2849417bebba8f772a34eae096e3.jpg)
Membro desde: 11/01/2007 05:58:55
Mensagens: 200
Offline
|
nao ta muito claro isso...
o retorno desse codigo q vc postou retorna boolean ou integer?
vc tem certeza que o fluxo esta entrando no terceiro if? usa um depurador pra ver a execução direitinho...
[]s
|
"Software engineering is a race between programmers, striving to build bigger & better idiot-proof programs, and the Universe, striving to build bigger and better idiots. So far, the Universe is winning." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 10:11:21
|
rconde
HelloWorld
![[Avatar]](/images/avatar/8316768bb07f4a490dd9bbcb4894a788.png)
Membro desde: 07/01/2009 08:38:53
Mensagens: 13
Offline
|
O retorno deste método é int, aquele método é booleano, está tudo certo quanto a isso.
Sei que está a sair no terceiro IF porque aqueles comandos que estão a ser executados dentro do IF estão mesmo a ser executados, só que o return que me dá é um daqueles que está em baixo, talvez seja a Main.
Não vejo rebuild nenhum, quando faço refresh e volto a carregar não tem essa opção.
EDIT: Os dois retornos que estão em baixo também são int, peço desculpa mas o método que está em cima não é o mesmo que está em baixo.
This message was edited 1 time. Last update was at 07/01/2009 10:12:43
|
RConde |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 10:21:12
|
marcobiscaro2112
JWizard
Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline
|
marcobiscaro2112 wrote:
Como faço o rebuild?
Clique com o botão direito sobre o projeto. Selecione 'Refresh'. Depois clique novamente com o botão direito e clique em 'Build Project'.
Você não encontrou Build Project?
|
Marco Biscaro.
Seja livre!
Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 10:22:19
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
rconde wrote:O retorno deste método é int, aquele método é booleano, está tudo certo quanto a isso.
Sei que está a sair no terceiro IF porque aqueles comandos que estão a ser executados dentro do IF estão mesmo a ser executados, só que o return que me dá é um daqueles que está em baixo, talvez seja a Main.
Não vejo rebuild nenhum, quando faço refresh e volto a carregar não tem essa opção.
EDIT: Os dois retornos que estão em baixo também são int, peço desculpa mas o método que está em cima não é o mesmo que está em baixo.
não ta certo não... heheh Um INT é um INT um BOOLEAN é um BOOLEAN ...
escolha o que vc quer retornar ^^
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 10:25:53
|
rconde
HelloWorld
![[Avatar]](/images/avatar/8316768bb07f4a490dd9bbcb4894a788.png)
Membro desde: 07/01/2009 08:38:53
Mensagens: 13
Offline
|
Lavieri wrote:
rconde wrote:O retorno deste método é int, aquele método é booleano, está tudo certo quanto a isso.
Sei que está a sair no terceiro IF porque aqueles comandos que estão a ser executados dentro do IF estão mesmo a ser executados, só que o return que me dá é um daqueles que está em baixo, talvez seja a Main.
Não vejo rebuild nenhum, quando faço refresh e volto a carregar não tem essa opção.
EDIT: Os dois retornos que estão em baixo também são int, peço desculpa mas o método que está em cima não é o mesmo que está em baixo.
não ta certo não... heheh Um INT é um INT um BOOLEAN é um BOOLEAN ...
escolha o que vc quer retornar ^^
O método de cima é diferente do de baixo.
Não tem nenhum build project.
|
RConde |
|
|
 |
|
|