[Dúvida] Return, if e métodos.  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
rconde
HelloWorld
[Avatar]

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
Mikhas
Virtual Machine Man
[Avatar]

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




[Email] [MSN]
rconde
HelloWorld
[Avatar]

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
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.
[WWW]
rconde
HelloWorld
[Avatar]

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
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.
[WWW]
Mikhas
Virtual Machine Man
[Avatar]

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




[Email] [MSN]
rconde
HelloWorld
[Avatar]

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?
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.
[Email] [WWW] [MSN]
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
[Email] [WWW] [MSN]
sf.marcius
JavaGuru
[Avatar]

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."
rconde
HelloWorld
[Avatar]

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
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
[Email] [WWW] [MSN]
Lavieri
GUJ Master
[Avatar]

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/
[ICQ]
rconde
HelloWorld
[Avatar]

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
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team