| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/10/2007 12:18:59
|
bcartaxo
JavaTeenager
Membro desde: 06/11/2006 00:35:48
Mensagens: 193
Localização: Recife - PE
Offline
|
Alguém sabe se existe algum metódo de alguma classe =P q informe se uma String é um número, seja ele inteiro ou real. Preciso validar se uma String é um número antes de dá o parse, até sei que da pra fazer um algoritmo usando alguns outros métodos, que resolveriam isso, mas um métood que faça isso diretamente iria ser bem útil.
Vlw pessoal.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/10/2007 13:26:11
|
maquiavelbona
JWizard
![[Avatar]](/images/avatar/24bea84d52e6a1f8025e313c2ffff50a.jpg)
Membro desde: 29/06/2006 09:06:51
Mensagens: 2447
Localização: São Paulo - SP
Offline
|
Integer.parseInt() ou equivalentes e em caso falso, recolha a exceção. Não, não conheço nenhum método que faça essa verificação. Até!
This message was edited 1 time. Last update was at 07/10/2007 13:53:25
|
----------------------------------------------------------------
"Within a few years a simple and inexpensive device, readily carried about, will enable one to receive on land or sea the principal news, to hear a speech, a lecture, a song or play of a musical instrument, conveyed from any other region of the globe. "
Nikola Tesla - A means for furthering Peace (1905)
"Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind."
Immanuel Kant - Kritik der reinen Vernunft (1781) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/10/2007 13:48:23
|
cassio
GUJ Master
![[Avatar]](/images/avatar/8ae7398026ed8f2172aefd6cbc856bc8.jpg)
Membro desde: 19/06/2006 08:25:28
Mensagens: 1336
Localização: Caieiras-SP
Offline
|
Se não quiser usar excessões como nosso amigo maquiavelbona falou, você pode fazer algo do tipo
Esse método isNumero() que eu escrevi não reconhece números negativos. Fica para você como lição de casa
|
Cássio Marques
Blog
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/10/2007 13:55:20
|
maquiavelbona
JWizard
![[Avatar]](/images/avatar/24bea84d52e6a1f8025e313c2ffff50a.jpg)
Membro desde: 29/06/2006 09:06:51
Mensagens: 2447
Localização: São Paulo - SP
Offline
|
E seu código não verifica se esse número pode ser real. Pode também ser outra lição de casa.
Até!
|
----------------------------------------------------------------
"Within a few years a simple and inexpensive device, readily carried about, will enable one to receive on land or sea the principal news, to hear a speech, a lecture, a song or play of a musical instrument, conveyed from any other region of the globe. "
Nikola Tesla - A means for furthering Peace (1905)
"Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind."
Immanuel Kant - Kritik der reinen Vernunft (1781) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/10/2007 13:59:28
|
PcAbrantes
Debugger
![[Avatar]](/images/avatar/9dff4e9a3dd78f2c4cfb49ea21b086f2.png)
Membro desde: 07/10/2007 11:16:04
Mensagens: 55
Offline
|
da pra fazer o teste com qualquer numero com o metodo: NumberFormat.getInstance().parseObject("string"); caso nao seja um numero ele lança a exceçao ParseException
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/10/2007 14:10:40
|
bcartaxo
JavaTeenager
Membro desde: 06/11/2006 00:35:48
Mensagens: 193
Localização: Recife - PE
Offline
|
É eu pensei justamente em usar os parsers e tratando as exceções, com isso dava pra validar, mas tava querendo saber se ja tinha esse métood pronto para eu n ter o trablaho de fazê-lo =P mas pelo jeito vou ter q fazer mesmo. Vlw mais uma vez.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/10/2007 14:33:56
|
cassio
GUJ Master
![[Avatar]](/images/avatar/8ae7398026ed8f2172aefd6cbc856bc8.jpg)
Membro desde: 19/06/2006 08:25:28
Mensagens: 1336
Localização: Caieiras-SP
Offline
|
maquiavelbona wrote:E seu código não verifica se esse número pode ser real. Pode também ser outra lição de casa.
Até!
Bem lembrado
|
Cássio Marques
Blog
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/10/2007 14:49:17
|
cassio
GUJ Master
![[Avatar]](/images/avatar/8ae7398026ed8f2172aefd6cbc856bc8.jpg)
Membro desde: 19/06/2006 08:25:28
Mensagens: 1336
Localização: Caieiras-SP
Offline
|
Pensando bem, essa solução seria melhor
|
Cássio Marques
Blog
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/10/2007 17:03:17
|
kaique
GUJ Ranger
![[Avatar]](/images/avatar/60bb8062ea8e0c7ff17bb2e484cd223a.png)
Membro desde: 10/04/2006 07:06:06
Mensagens: 911
Localização: Fortaleza-CE
Offline
|
Você também pode cada caractere da String e passando o mesmo para o método isDigit(char c) da classe Character...
[]'s.
|
/**
*
* Carlos Henrique
* carlosce@gmail.com
* kaiquece@hotmail.com
*
* Sun Certified Programmer for the Java 2 Platform, SE 5.0
* Sun Certified Web Component Developer for J2EE 1.4
* Sun Certified Bussiness Component Developer for J2EE 1.3
*
*/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/10/2007 21:51:34
|
peerless
GUJ Master
![[Avatar]](/images/avatar/5b2a8f2b014bb326fd82ee313704e78c.jpg)
Membro desde: 22/01/2007 14:52:26
Mensagens: 1391
Localização: Porto Alegre / RS
Offline
|
Lembrando, que é sempre mais interessante, trabalhar com métodos, evitando ao máximo, utilizar exceções para este tipo de coisa. Dica de desempenho.
This message was edited 1 time. Last update was at 07/10/2007 21:52:27
|
follow me
pitacos
"The most problems that teams face are about communication, and all the others are too." - Dan North
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/10/2007 22:03:42
|
maquiavelbona
JWizard
![[Avatar]](/images/avatar/24bea84d52e6a1f8025e313c2ffff50a.jpg)
Membro desde: 29/06/2006 09:06:51
Mensagens: 2447
Localização: São Paulo - SP
Offline
|
Não entendi qual é a grande perda de desempenho em trabalhar com exceções. Além de muitas vezes ser melhor trabalhar com exceções do que com retornos do tipo -1, false ou NaN.
Até!
|
----------------------------------------------------------------
"Within a few years a simple and inexpensive device, readily carried about, will enable one to receive on land or sea the principal news, to hear a speech, a lecture, a song or play of a musical instrument, conveyed from any other region of the globe. "
Nikola Tesla - A means for furthering Peace (1905)
"Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind."
Immanuel Kant - Kritik der reinen Vernunft (1781) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/10/2007 09:04:48
|
peczenyj
Moderador
![[Avatar]](/images/avatar/299dc35e747eb77177d9cea10a802da2.jpg)
Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline
|
Usar expressões regulares é uma boa ideia, sobretudo se vc quiser fazer validações client-side.
|
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) 16/10/2007 13:08:13
|
peerless
GUJ Master
![[Avatar]](/images/avatar/5b2a8f2b014bb326fd82ee313704e78c.jpg)
Membro desde: 22/01/2007 14:52:26
Mensagens: 1391
Localização: Porto Alegre / RS
Offline
|
maquiavelbona wrote:Não entendi qual é a grande perda de desempenho em trabalhar com exceções. Além de muitas vezes ser melhor trabalhar com exceções do que com retornos do tipo -1, false ou NaN.
Até!
Achas que não é melhor fazer um método de validação do que trabalhar com exceções forçadas?
|
follow me
pitacos
"The most problems that teams face are about communication, and all the others are too." - Dan North
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2007 13:15:40
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
1) Uma expressão regular que bata exatamente com um número* demora bem mais para ser processada que uma rotina que faça um parseInt ou parseDouble e capture a exceção. Esquisito porém verdade. Só que é conveniente deixar isso "trancado" dentro de uma rotina utilitária.
2) Lembro que esse jeito de tratar a validação não é incomum - eu tinha lido um livro sobre Oracle 7 onde um problema semelhante era proposto, e o autor constatou que o mais rápido era mesmo fazer o equivalente em PL/SQL ao Java de capturar a exceção. Não sei como está a situação agora no Oracle 10 - pode ser que haja uma função pronta para isso.
* Escrever uma expressão regular que bata exatamente com um número não é coisa simples, e como as expressões regulares são bastante complicadas, seu processamento (mesmo efetuando a pré-compilação) é bastante demorado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2007 13:27:23
|
maquiavelbona
JWizard
![[Avatar]](/images/avatar/24bea84d52e6a1f8025e313c2ffff50a.jpg)
Membro desde: 29/06/2006 09:06:51
Mensagens: 2447
Localização: São Paulo - SP
Offline
|
peerless wrote:...
Achas que não é melhor fazer um método de validação do que trabalhar com exceções forçadas?
Não. Não em muitos casos de validação, transformação, consolidação etc. No mesmo exemplo de transformar um String em um número, o mesmo pode não ser, o que logicamente seria um valor avesso ao esperado, necessitando assim que haja um lançamento de exceção, ou achas melhor que nesse caso ele retorne -1, ou só false? Mas foi false por que? Porque a String é inválida, é inválida porque houve um problema interno ou sei lá o que?
Voltar a programar como fazíamos a 20 anos atrás não é benefício nenhum, muito menos com suposta relação a performance.
Até!
|
----------------------------------------------------------------
"Within a few years a simple and inexpensive device, readily carried about, will enable one to receive on land or sea the principal news, to hear a speech, a lecture, a song or play of a musical instrument, conveyed from any other region of the globe. "
Nikola Tesla - A means for furthering Peace (1905)
"Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind."
Immanuel Kant - Kritik der reinen Vernunft (1781) |
|
|
 |
|
|