É número?  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
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.
[MSN]
maquiavelbona
JWizard
[Avatar]

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)
cassio
GUJ Master
[Avatar]

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
maquiavelbona
JWizard
[Avatar]

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)
PcAbrantes
Debugger
[Avatar]

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
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.
[MSN]
cassio
GUJ Master
[Avatar]

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
cassio
GUJ Master
[Avatar]

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
kaique
GUJ Ranger
[Avatar]

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
*
*/
[MSN]
peerless
GUJ Master
[Avatar]

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





[MSN]
maquiavelbona
JWizard
[Avatar]

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)
peczenyj
Moderador
[Avatar]

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.'
[WWW]
peerless
GUJ Master
[Avatar]

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





[MSN]
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.
[WWW]
maquiavelbona
JWizard
[Avatar]

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