Simples código de algoritmo mas que fez oque eu nao esperava  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
janjan
JavaEvangelist
[Avatar]

Membro desde: 25/09/2008 18:44:25
Mensagens: 434
Offline




Esse prog simplesmente imprimi a soma de 2 nros, se digitar uma letra ou numero invalido ele sugere tentar novamente...
mas se eu errar a digitação 5 vezes e acertar na sexta...
ele imprime o 1º resultado correto e mais 5 resultados zerados!

pra mim é estranho!
se souberem uma explicação simples, porem que tire a duvida!
agradeço
abraços

This message was edited 1 time. Last update was at 26/05/2010 08:05:21

[Email] [MSN]
gabrielbzan
Entusiasta Java

Membro desde: 09/09/2006 13:47:59
Mensagens: 16
Offline

é que voce declara o float f = 0. Depois voce erra o numero e cai no catch, chamando o mesmo método.

Como voce capturou a exceção, o codigo segue sendo executado, no caso o "return f; ".

Ou seja, se voce errar 10 vezes, vao ocorrer 10 "return f", onde f será igual a Zero, declardo no começo do método!

entendeu?
luiz.portnoy
JavaChild
[Avatar]

Membro desde: 11/05/2010 13:56:09
Mensagens: 137
Localização: Vitória - ES
Offline

1º: Não utilize todos os métodos como static. Não que isso não seja certo mas, acaba não sendo Orientação a Objetos.
2º: Não precisa sempre escrever java.lang.System.out.print . java.lang é uma pacote que já "entendido automaticamente", portanto não precisa declará-lo.
3º: Como o gabrielbzan falou, sempre a váriavel é zerada.

Espero ter ajudado.

Triste: Mike Portnoy saiu do Dream Theater...
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline

O problema é que você está utilizando recursão. Quando você sair do método chamaCalcula correto, o código irá voltar para o testeCalcula que o chamou. O ideal é fazer um parseFloat de cada vez.

Outra coisa. Você criou o método p e não está usando. Também não é necessário digitar "java.lang" antes de "System.out.println". Finalmente, desde o Java 5, recomenda-se fazer entrada com a classe Scanner, no lugar da BufferedReader:


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

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
[WWW]
janjan
JavaEvangelist
[Avatar]

Membro desde: 25/09/2008 18:44:25
Mensagens: 434
Offline

me acostumei usar o java.lang.System.out.println...
coisa da aplicação que trabalho, que se nao for assim nao faz o print.

esqueci de deixa o método p();
ele só fazia o println! hehehe

mas intendi a logica agora! e bom esse teu pensamento viny!
a experiencia ajuda bastante! hehe
abraços!
[Email] [MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team