[Java] Filtragem de Strings e Inteiros

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

[Java] Filtragem de Strings e Inteiros

Mensagempor Rafael Pais » Quarta Jan 05, 2005 22:41

Boas...

Gostaria de Tirar a seguinte duvida...
Eu gostaria que, ao escrever um número numa InputBox, e que se eu escrever uma String (Letras ao acaso), aparecer um erro tipo "Por Favor escreva so Números!"

Eu estive a pensar no "not isnumeric", que também existe no Visual Basic, mas nao me funciona e também ja estive a procurar no google, mas também nao encontro algo sobre isso...

Eu estou a pensar assim:

Código: Seleccionar todos
if (num_algarismos not isnumeric)
{
    JOptionPane.showMessageDialog(null,"Por Favor, escreva só números!");
}



Muito obrigado... :wink:
Desktop :arrow: P4 3Ghz * 512Mb RAM (DDR 400) * 80Gb HDD Seagate * Geforce 4 MX440 * Pinnacle PCTV

Notebook :arrow: Toshiba Satellite M30X-128
Rafael Pais
Aprendiz
Aprendiz
 
Mensagens: 57
Registado: Segunda Dez 06, 2004 0:47
Localização: Vila Nova de Gaia

Mensagempor alfatek » Quarta Jan 05, 2005 23:13

n tenho aqui um compilador à mão portanto n sei s n há uma forma mais "amiga" de se fazer isso mas uma forma é tentar converter a string p inteiro: Integer.parseInt() e fazer try catch da excepção que vai resultar caso a string n seja um numero... mas procura no Integer se n há uma função exactamente para o que queres ou msm na String.
alfatek
Administrador
Administrador
 
Mensagens: 3257
Registado: Sábado Abr 06, 2002 18:28
Localização: Coimbra

Mensagempor Rafael Pais » Quarta Jan 05, 2005 23:40

isso ja tinha feito o parseint

Código: Seleccionar todos
int num_algarismos = Integer.parseInt( JOptionPane.showInputDialog("Introduza o Número de Algarismos" ) );


mas nao estou a conseguir é fazer o Try-Catch disso :?

Ate ja fiz coisas estupidas cmo isto:

Código: Seleccionar todos
if (num_algarismos == String.valueOf(num_algarismos)
       {
           JOptionPane.showMessageDialog(null,"Erro!");
       }
Editado pela última vez por Rafael Pais em Quarta Jan 05, 2005 23:48, num total de 1 vez.
Desktop :arrow: P4 3Ghz * 512Mb RAM (DDR 400) * 80Gb HDD Seagate * Geforce 4 MX440 * Pinnacle PCTV

Notebook :arrow: Toshiba Satellite M30X-128
Rafael Pais
Aprendiz
Aprendiz
 
Mensagens: 57
Registado: Segunda Dez 06, 2004 0:47
Localização: Vila Nova de Gaia

Mensagempor ZePinga » Quarta Jan 05, 2005 23:45

Rafael Pais Escreveu:isso ja tinha feito o parseint

Código: Seleccionar todos
int num_algarismos = Integer.parseInt( JOptionPane.showInputDialog("Introduza o Número de Algarismos" ) );


mas nao estou a conseguir é fazer o Try-Catch disso :?




Tenta isto:

try{
int num_algarismos = Integer.parseInt( JOptionPane.showInputDialog("Introduza o Número de Algarismos" ) );
} catch(IOException error){
trata aqui a exception
}


deve funcionar
IST, Lisbon DEI - LEIC
www.dei.ist.utl.pt
ZePinga
Aprendiz
Aprendiz
 
Mensagens: 98
Registado: Domingo Set 12, 2004 22:29

Mensagempor Rafael Pais » Quinta Jan 06, 2005 0:00

ZePinga Escreveu:
Rafael Pais Escreveu:isso ja tinha feito o parseint

Código: Seleccionar todos
int num_algarismos = Integer.parseInt( JOptionPane.showInputDialog("Introduza o Número de Algarismos" ) );


mas nao estou a conseguir é fazer o Try-Catch disso :?




Tenta isto:

try{
int num_algarismos = Integer.parseInt( JOptionPane.showInputDialog("Introduza o Número de Algarismos" ) );
} catch(IOException error){
trata aqui a exception
}


deve funcionar


Fiz cmo dizeste, mas dá-me este erro ao executar:
symbol : class IOException
location: class MasterMind
catch(IOException error)


Edit:

Fiz o import de java.io.* e agora da-me um erro ainda mais estupido:
exception java.io.IOException is never thrown in body of corresponding try statement
catch(IOException error)
^
Desktop :arrow: P4 3Ghz * 512Mb RAM (DDR 400) * 80Gb HDD Seagate * Geforce 4 MX440 * Pinnacle PCTV

Notebook :arrow: Toshiba Satellite M30X-128
Rafael Pais
Aprendiz
Aprendiz
 
Mensagens: 57
Registado: Segunda Dez 06, 2004 0:47
Localização: Vila Nova de Gaia

Mensagempor Rafael Pais » Quinta Jan 06, 2005 0:08

Pronto... Consegui!

Tirei o "IO" do "IOExeption"
Desktop :arrow: P4 3Ghz * 512Mb RAM (DDR 400) * 80Gb HDD Seagate * Geforce 4 MX440 * Pinnacle PCTV

Notebook :arrow: Toshiba Satellite M30X-128
Rafael Pais
Aprendiz
Aprendiz
 
Mensagens: 57
Registado: Segunda Dez 06, 2004 0:47
Localização: Vila Nova de Gaia

Mensagempor ZePinga » Sexta Jan 07, 2005 11:56

Rafael Pais Escreveu:Pronto... Consegui!

Tirei o "IO" do "IOExeption"



Nem mais pelo o erro que me mostraste agora atenção que quando fazes Exception só tás a criar um "problema" repara que tu assim apanhar qualquer excepção!!!! O que poderá originar erros mais tarde na execução do teu programa imagina que tu estás á xpera de um tipo de excepção e dentro do catch tratas essas excepção q tu pensas que pode ocorrer. Como fazes Exception apanhas qualquer excepção e poderás estar a tratar uma excepção que não é aquela que pretendes!! Portanto coitado com isso...

Só para teres uma ideia como fiz a minha cadeira de PO (programação com objectos) no meu projecto que era feito em java se houvesse um catch de Exception, ou seja apanhar qualquer coisa o projecto era anulado e ficava com 0 valores no mesmo ;)

Xau
IST, Lisbon DEI - LEIC
www.dei.ist.utl.pt
ZePinga
Aprendiz
Aprendiz
 
Mensagens: 98
Registado: Domingo Set 12, 2004 22:29

Mensagempor alfatek » Segunda Jan 10, 2005 23:28

IOException estás a apanhar excepções relacionadas com IO. Tipo, abrir ficheiros que não existem e coisas assim.

A excepção que acontece é NumberFormatException se não estou em erro, portanto tens d fazer:
catch (NumberFormatException e)
alfatek
Administrador
Administrador
 
Mensagens: 3257
Registado: Sábado Abr 06, 2002 18:28
Localização: Coimbra

Mensagempor ZePinga » Terça Jan 11, 2005 0:21

alfatek Escreveu:IOException estás a apanhar excepções relacionadas com IO. Tipo, abrir ficheiros que não existem e coisas assim.

A excepção que acontece é NumberFormatException se não estou em erro, portanto tens d fazer:
catch (NumberFormatException e)



Yep nem mais :)
IST, Lisbon DEI - LEIC
www.dei.ist.utl.pt
ZePinga
Aprendiz
Aprendiz
 
Mensagens: 98
Registado: Domingo Set 12, 2004 22:29

Mensagempor JB » Quarta Jan 19, 2005 18:45

ZePinga Escreveu:Nem mais pelo o erro que me mostraste agora atenção que quando fazes Exception só tás a criar um "problema" repara que tu assim apanhar qualquer excepção!!!! O que poderá originar erros mais tarde na execução do teu programa imagina que tu estás á xpera de um tipo de excepção e dentro do catch tratas essas excepção q tu pensas que pode ocorrer. Como fazes Exception apanhas qualquer excepção e poderás estar a tratar uma excepção que não é aquela que pretendes!! Portanto coitado com isso...


tens razão mas neste caso não se coloca ese problema pois se ele só tem o parse dentro do try... a unica excepção que pode apanhar é mesmo aquela...

isso depende muito do código que está dentro do try.... e depende do grau de perfecionismo que se quer por nas coisas...

fiquem bien
JB
Membro de Prata
Membro de Prata
 
Mensagens: 150
Registado: Terça Jul 06, 2004 0:04
Localização: Coimbra - DEIUC

Mensagempor alfatek » Quarta Jan 19, 2005 20:35

JB Escreveu:
ZePinga Escreveu:Nem mais pelo o erro que me mostraste agora atenção que quando fazes Exception só tás a criar um "problema" repara que tu assim apanhar qualquer excepção!!!! O que poderá originar erros mais tarde na execução do teu programa imagina que tu estás á xpera de um tipo de excepção e dentro do catch tratas essas excepção q tu pensas que pode ocorrer. Como fazes Exception apanhas qualquer excepção e poderás estar a tratar uma excepção que não é aquela que pretendes!! Portanto coitado com isso...


tens razão mas neste caso não se coloca ese problema pois se ele só tem o parse dentro do try... a unica excepção que pode apanhar é mesmo aquela...

isso depende muito do código que está dentro do try.... e depende do grau de perfecionismo que se quer por nas coisas...

fiquem bien


Acho que a tua afirmação está errada... Num azar dos diabos pode ocorrer uma excepção do género alguém matar o java, a JVM explodir ou a thread ser trocada ;) Dá sempre jeito ser especifico quando isso é possivel e sabemos ser especificos. Neste caso, na prática, n haveria problema... Mas imagina que vais ler o código daqui a 25 anos, Exception n t indica nada de jeito, se meteres a excepção concreta, mais facilmente entendes o que querias fazer :)
alfatek
Administrador
Administrador
 
Mensagens: 3257
Registado: Sábado Abr 06, 2002 18:28
Localização: Coimbra

Mensagempor dbbm » Sexta Fev 11, 2005 23:16

já foi apresentada uma boa solução, mas também existem vários métodos na classe string que podem ajudar a determinar se há caracteres sem serem digitos. Basta ver uma referencia.
dbbm
Aprendiz
Aprendiz
 
Mensagens: 47
Registado: Quinta Mai 27, 2004 13:34


Voltar para Programação

Quem está ligado:

Utilizadores a ver este Fórum: Nenhum utilizador registado e 0 visitantes

cron