| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/11/2006 19:00:18
|
lordi
JavaBaby
![[Avatar]](/images/avatar/414187419105b06734cd36adead79115.png)
Membro desde: 21/11/2006 18:57:10
Mensagens: 76
Offline
|
Boa tarde,
Estou com um pequeno problema quanto à Exceções. Estou tentando gerar uma exceção ao calcular a raiz quadrada de um número em formato double
calcular a tangente tb deste número, a partir do seu seno e cosseno
Claro que está bem errado ai nos códigos acima mas como eu poderia gerar estas exceções?
Obrigado
|
Renato E. Silva
Raciocinar é uma arte e não uma ciência - Wos, Raciocínio Automático, 1984
A Primeira Lei da Profecia:
Quando um cientista famoso, mas de idade avançada, afirma que algo é possível, ele está quase indubtavelmente certo. Quando ele afirma que algo é impossível, ele muito provavelmente está errado.
A Segunda Lei:
A única maneira de descobrir os limites do possível é se aventurar um pouco no impossível.
A Terceira Lei:
Qualquer tecnologia suficientemente avançada é indistinguível da mágica. - Arthur C. Clarke |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/11/2006 19:22:01
|
lordi
JavaBaby
![[Avatar]](/images/avatar/414187419105b06734cd36adead79115.png)
Membro desde: 21/11/2006 18:57:10
Mensagens: 76
Offline
|
Consegui arrumar o método da raiz quadrada mas a tangente está retornando um estouro:
-16331239353195370,000000
Coloquei este trecho:
Desculpe-me pela ignorância no assunto, não cheguei a estudar esta parte no livro
Obrigado e até mais
|
Renato E. Silva
Raciocinar é uma arte e não uma ciência - Wos, Raciocínio Automático, 1984
A Primeira Lei da Profecia:
Quando um cientista famoso, mas de idade avançada, afirma que algo é possível, ele está quase indubtavelmente certo. Quando ele afirma que algo é impossível, ele muito provavelmente está errado.
A Segunda Lei:
A única maneira de descobrir os limites do possível é se aventurar um pouco no impossível.
A Terceira Lei:
Qualquer tecnologia suficientemente avançada é indistinguível da mágica. - Arthur C. Clarke |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/11/2006 19:27:10
|
lordi
JavaBaby
![[Avatar]](/images/avatar/414187419105b06734cd36adead79115.png)
Membro desde: 21/11/2006 18:57:10
Mensagens: 76
Offline
|
Vou reformular a pergunta pq acho que entederei mais facil
ArithmeticException lança exceção em raiz quadrada de numeros menores que 1? Na divisao por zero a classe lança mas n estah funcionando no método da tangente
|
Renato E. Silva
Raciocinar é uma arte e não uma ciência - Wos, Raciocínio Automático, 1984
A Primeira Lei da Profecia:
Quando um cientista famoso, mas de idade avançada, afirma que algo é possível, ele está quase indubtavelmente certo. Quando ele afirma que algo é impossível, ele muito provavelmente está errado.
A Segunda Lei:
A única maneira de descobrir os limites do possível é se aventurar um pouco no impossível.
A Terceira Lei:
Qualquer tecnologia suficientemente avançada é indistinguível da mágica. - Arthur C. Clarke |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/11/2006 19:45:19
|
kaabah
Java Ninja
![[Avatar]](/images/avatar/aedf8c04c36592dbe313d5938e1cd45e.jpg)
Membro desde: 23/05/2006 09:56:33
Mensagens: 260
Localização: Vitória-ES
Offline
|
sqrt
public static double sqrt(double a)
Returns the correctly rounded positive square root of a double value. Special cases:
* If the argument is NaN or less than zero, then the result is NaN.
* If the argument is positive infinity, then the result is positive infinity.
* If the argument is positive zero or negative zero, then the result is the same as the argument.
Otherwise, the result is the double value closest to the true mathematical square root of the argument value.
Parameters:
a - a value.
Returns:
the positive square root of a. If the argument is NaN or less than zero, the result is NaN.
|
-----
Sun Certified Java Programmer
"O que eu espero senhores, é que depois de um razoável período de discussão, todo mundo concorde comigo". (Winston Churchill) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/11/2006 19:52:56
|
kaabah
Java Ninja
![[Avatar]](/images/avatar/aedf8c04c36592dbe313d5938e1cd45e.jpg)
Membro desde: 23/05/2006 09:56:33
Mensagens: 260
Localização: Vitória-ES
Offline
|
Um outro detalhe, tan 135° e de 315° é -1... hehehe... isso daí pode retornar um resultado não esperado hein!
|
-----
Sun Certified Java Programmer
"O que eu espero senhores, é que depois de um razoável período de discussão, todo mundo concorde comigo". (Winston Churchill) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/11/2006 19:53:44
|
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
|
Olha só. No caso da raiz quadrada, o problema é que o método sqrt da classe Math não lança exceção em momento algum, mesmo quando você tenta passar um valor negativo para o método!!!
Neste caso, o método retorna o que chamamos de Not-a-Number, mais conhecido por "NaN". Este NaN é representado em Java por uma constante do tipo double com o mesmo nome, disponibilizada pela classe Double.
Uma maneira para forçar seu método a lançar alguma exceção seria a seguinte:
Ou seja, você deve verificar se o valor retornado é um NaN, através do método Double.isNaN(double). Se for, você lança uma exceção, ou faz o que quiser.
No caso do seno e cosseno, provavelmente deve ser a mesma coisa, caso vc esteja novamente utilizando métodos da classe Math. Se aos métodos sin e cos for passado um NaN ou um número infinito (Double.NEGATIVE_INFINITY ou Double.POSITIVE_INFINITY), será retornado por esses métodos o bendito NaN... Outro agravante é que parece que qualquer operação envolvendo um NaN, resulta em NaN, mesmo que seja, por exemplo "Double.NaN / 0".
Tente contornar a situação sempre verificando se o resultado da conta se equipara ao Double.NaN.
Obs: Não compare um double diretamente com o Double.NaN. Não sei por quê, mas não funciona... Utilize o Double.isNaN(double)
|
[]'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/11/2006 19:55:57
|
lordi
JavaBaby
![[Avatar]](/images/avatar/414187419105b06734cd36adead79115.png)
Membro desde: 21/11/2006 18:57:10
Mensagens: 76
Offline
|
entendi
retornou NaN mesmo mas agora nao estou entendendo o bendito estouro no método da tangente hehe
Mas obrigado pela ajuda pessoal
Vou dar uma olhada aqui, se nao conseguir volto a postar mais tarde
[]'s
|
Renato E. Silva
Raciocinar é uma arte e não uma ciência - Wos, Raciocínio Automático, 1984
A Primeira Lei da Profecia:
Quando um cientista famoso, mas de idade avançada, afirma que algo é possível, ele está quase indubtavelmente certo. Quando ele afirma que algo é impossível, ele muito provavelmente está errado.
A Segunda Lei:
A única maneira de descobrir os limites do possível é se aventurar um pouco no impossível.
A Terceira Lei:
Qualquer tecnologia suficientemente avançada é indistinguível da mágica. - Arthur C. Clarke |
|
|
 |
|
|