| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2006 12:37:20
|
akumaldo
Java Ninja
![[Avatar]](/images/avatar/ac457ba972fb63b7994befc83f774746.jpg)
Membro desde: 09/06/2006 20:30:06
Mensagens: 283
Offline
|
Nesse código pessoal estou com uma dúvida...no meu getConta(int x) eu gostaria de verificar se o x que me é passado não vai estourar o .lenght do meu array, porém tentei fazer assim:
Mas não vai desse jeito, acusa que a função getConta precisa retornar o tipo Conta, eu entendo, é por que o return não pode aparecer dentro de um bloco if...mas agora não me vêm como posso fazer isso? alguém se habilita?
|
"O homem se resume em sua vontade de poder...Vontade de poder e nada mais! Viva a vida, morte a verdade..."
Nietzsche |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2006 13:03:01
|
Filipe Sabella
GUJ Expert
Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline
|
Existem duas formas de lidar com isto.
1. Lançar uma exceção e parar o programa. É bom reutilizar exceções que já existem:
2. Retornar null. Há outras maneiras de implementar esta checagem simples, mas é bom ter apenas um "return" por método:
|
Former LIPE. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2006 13:07:21
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
akumaldo wrote:
Mas não vai desse jeito, acusa que a função getConta precisa retornar o tipo Conta, eu entendo, é por que o return não pode aparecer dentro de um bloco if...mas agora não me vêm como posso fazer isso? alguém se habilita?
Acho que seu problema é de português. Qual é a diferença entre conta[x] e contas[x]?
A propósito, o return pode aparecer em um bloco if sim. Não tem problemas.
(Não fique chateado, eu faço isso de vez em quando também.)
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/06/2006 00:24:07
|
akumaldo
Java Ninja
![[Avatar]](/images/avatar/ac457ba972fb63b7994befc83f774746.jpg)
Membro desde: 09/06/2006 20:30:06
Mensagens: 283
Offline
|
Bom..eu só escrevi errado aqui no site..por que lá na class eu prestei bastante atenção se estava escrevendo corretamente...
bom...quando eu coloco dentro do if, aparece simplesmente que o metodo deve retornar um objeto do tipo Conta...pode ter certez conferi bastante para não ver se era erro de português(sempre acontece mesmo...)
bom..vou tentar jogando a exception...
abração
|
"O homem se resume em sua vontade de poder...Vontade de poder e nada mais! Viva a vida, morte a verdade..."
Nietzsche |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/06/2006 09:50:55
|
Mantu
GUJ Ranger
![[Avatar]](/images/avatar/35285aa740b37f0b1933da97bf4ca4b9.jpg)
Membro desde: 27/03/2006 09:05:16
Mensagens: 961
Localização: São Paulo/SP
Offline
|
Por que quando vc coloca dentro do if "aparece simplesmente que o metodo deve retornar um objeto do tipo Conta"? Porque o compilador é um "cara cauteloso", pessimista até, que pensa (ou tenta) em todas as possibilidades possíveis de nosso programa fazer caca...
O compilador te fala isso porque provavelmente naquele trecho que vc escreveu
não deve ter uma instrução return.
Por que isso? Porque se um método retorna Conta, por exemplo, o compilador não vai compilar enquanto houver alguma possibilidade de o método terminar e não retornar nada, ou seja, não executar uma instrução .
Perceba o seguinte: Vamos supor que o seu código seja esse para aquele método:
Nesse caso, vai dar aquele erro que está te apoquentando. Vejamos porque:
Se x for menor que o comprimento de conta, ele entra no if e retorn conta[x]. Mas se x for maior ou igual ao comprimento de conta o que aconteceria? O método iria entrar no else, jogar na tela um "Nenhuma conta encontrada", sair do else e encerrar o processamen... OPA!!! Ele ia encerrar sem retornar nada!!! Isso o compilador não pode permitir, por que lá fora, tem alguém que chamou o getConta(int) e está esperando dele ou uma instância da classe Conta, ou um null. Por isso aquele erro que vc mencionou: Por que o compilador (ou pré-compilador, se vc tiver usando alguma IDE que te mostre os erros em tempo de digitação) não permite que um método, que diz retorna alguma, não retorne nada (ou seja, "retorne" void).
E isso continuaria acontecendo se vc tivesse um caso assim também:
Nesse caso, se o método entrar no segundo else, ele vai denovo terminar sem retornar nada. Então o compilador tá manda aquela mensagensinha simpático, informando que o método deve retornar um Conta.
Espero ter ajudado!
qq coisa, poste mais, ok!?
|
[]'s
Mantu
"Vou lançar o 'Caguei'. Caguei para o 'Cansei'". Luciano Camargo
"O povo votou contra a opinião pública". Um certo jornalão da mídia golpista, a respeito da vitória de um certo cadidato a presidente do Brasil.
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/06/2006 10:27:30
|
peczenyj
Moderador
![[Avatar]](/images/avatar/299dc35e747eb77177d9cea10a802da2.jpg)
Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline
|
Vc pode tratar esta tipo de coisa com try/catch. imagine que vc tem um vetor de contas com 1000 elementos mas só inicializou 50 deles... o ideal seria implementar um metodo find que retornasse um booleano se não existisse a conta, por exemplo.
|
http://pacman.blog.br
'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.' |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/06/2006 12:25:10
|
akumaldo
Java Ninja
![[Avatar]](/images/avatar/ac457ba972fb63b7994befc83f774746.jpg)
Membro desde: 09/06/2006 20:30:06
Mensagens: 283
Offline
|
Mantu wrote:Por que quando vc coloca dentro do if "aparece simplesmente que o metodo deve retornar um objeto do tipo Conta"? Porque o compilador é um "cara cauteloso", pessimista até, que pensa (ou tenta) em todas as possibilidades possíveis de nosso programa fazer caca...
O compilador te fala isso porque provavelmente naquele trecho que vc escreveu
não deve ter uma instrução return.
Por que isso? Porque se um método retorna Conta, por exemplo, o compilador não vai compilar enquanto houver alguma possibilidade de o método terminar e não retornar nada, ou seja, não executar uma instrução .
Perceba o seguinte: Vamos supor que o seu código seja esse para aquele método:
Nesse caso, vai dar aquele erro que está te apoquentando. Vejamos porque:
Se x for menor que o comprimento de conta, ele entra no if e retorn conta[x]. Mas se x for maior ou igual ao comprimento de conta o que aconteceria? O método iria entrar no else, jogar na tela um "Nenhuma conta encontrada", sair do else e encerrar o processamen... OPA!!! Ele ia encerrar sem retornar nada!!! Isso o compilador não pode permitir, por que lá fora, tem alguém que chamou o getConta(int) e está esperando dele ou uma instância da classe Conta, ou um null. Por isso aquele erro que vc mencionou: Por que o compilador (ou pré-compilador, se vc tiver usando alguma IDE que te mostre os erros em tempo de digitação) não permite que um método, que diz retorna alguma, não retorne nada (ou seja, "retorne" void).
E isso continuaria acontecendo se vc tivesse um caso assim também:
Nesse caso, se o método entrar no segundo else, ele vai denovo terminar sem retornar nada. Então o compilador tá manda aquela mensagensinha simpático, informando que o método deve retornar um Conta.
Espero ter ajudado!
qq coisa, poste mais, ok!?
Genial...é isso ae mesmo!! o compilador estava alertando para a burrada de talvez não retornar nada...OBRIGADO PELA LUZ!! foi muito útil a explicação!!agradeço!
agora o code já está rodando legal, taquei uma exception e tá rolando legal agora....obrigado a todos!
abraço
|
"O homem se resume em sua vontade de poder...Vontade de poder e nada mais! Viva a vida, morte a verdade..."
Nietzsche |
|
|
 |
|
|