Ola pessoal estou com uma dúvida bem besta, mas importante
tenho uma String a que é lida e como eu faço para saber se é um int
tipo
se (a == int){
mostrar( é um número);
}senao {
mostrar( é uma palavra);
simples não?, mas eu não sei fazer
Ola pessoal estou com uma dúvida bem besta, mas importante
tenho uma String a que é lida e como eu faço para saber se é um int
tipo
se (a == int){
mostrar( é um número);
}senao {
mostrar( é uma palavra);
simples não?, mas eu não sei fazer
tenta fazer um parse pra int
[code]try{
Integer.parseInt(a);
}catch(NumberFormatException e){
}[/code]
també dá pra fazer usando regex
[code]public static void main(String[] args) {
String s = “A”;
try{
Integer.parseInt(s);
System.out.println(“é numero”);
}catch(Exception e){
System.out.println(“NÃO é numero”);
}
}[/code]
eu sabia que não era tão difícil.
Obrigado pessoal: Marlon Meneses e mateus.cordeiro
agora é só usar essa lógica em uma coisa um pouquinho mas complicada
valeu gente
NÃO FAÇA ISSO
Evite REGEX o quanto puder… lembre-se que você e outras pessoas precisarão dar manutenção neste sistema depois!!! Use padrões!!!
NÃO FAÇA ISSO
Evite REGEX o quanto puder… lembre-se que você e outras pessoas precisarão dar manutenção neste sistema depois!!! Use padrões!!![/quote]
++
NÃO FAÇA ISSO
Evite REGEX o quanto puder… lembre-se que você e outras pessoas precisarão dar manutenção neste sistema depois!!! Use padrões!!![/quote]
O que usar regex tem a ver? O único problema seria se a pessoa que for dar manutenção não souber expressões regulares.
NÃO FAÇA ISSO
Evite REGEX o quanto puder… lembre-se que você e outras pessoas precisarão dar manutenção neste sistema depois!!! Use padrões!!![/quote]
++[/quote]
Não entendi… pq ??? regex não é padrão ???
Eu acho muito mais elegante algo como:
public static boolean isNumeroRegexp(String texto) {
Pattern pat = Pattern.compile("[0-9]+");
Matcher mat = pat.matcher(texto);
return mat.matches();
}
do que um try/catch…
public static boolean isNumeroTry(String texto) {
try {
Integer.parseInt(texto);
return true;
} catch (NumberFormatException nfex) {
return false;
}
}
Será que estou errado?
[quote=digaoneves]O que usar regex tem a ver? O único problema seria se a pessoa que for dar manutenção não souber expressões regulares.[/quote]+1
É nessa hora que a boa prática de Code Review ou Pair Programming mata a pau. O conhecimento é disseminado e quem não sabia como funciona um regex, passa a saber. [=
Claro que não. Eu concordo com você.
“A simplicidade é o último grau de sofisticação.” Leonardo da Vinci.
Pra que complicar se é possível facilitar? Usar regex só se for inevitável!!! Neste caso, é muito mais claro, padronizado, elegante e profissional validar através de “NumberFormatException”… afinal de contas, não por isso que esta exceção existe?
Quem gosta de complicação tem que ir programar é em assembler! Tem muito mercado, aproveitem!
[quote=robson.crulz]“A simplicidade é o último grau de sofisticação.” Leonardo da Vinci.
Pra que complicar se é possível facilitar? Usar regex só se for inevitável!!! Neste caso, é muito mais claro, padronizado, elegante e profissional validar através de “NumberFormatException”.[/quote]Você acha mais elegante estourar uma exception? ter que colocar um try/catch no seu código apenas para saber se é um número ou não? Bem se essa é sua opinião eu respeito, mas é totalmente diferente da minha. [=
“hahah vá à merda meu”
cada com seu tipo de padrão…
if ( suaString.matches ("[0-9]+") ) {
// converte para inteiro
}
Sou contra lançar exceções sem necessidade. Deixar que a JVM estoure uma exceção para sabermos se é ou não possível a conversão se temos meio de evitarmos exceções. Há expressões regulares complexas e elas, sim, são “lentas”. Mas trata-se de algo elegante e simples de usar, muito mais adequado que um tratamento de exceção.
Opinião minha.
Puxa tudo isso só para saber se o cara digitou um numero?
Tudo isso o que? o try/catch? ou a regex?
se eu quizer retornar true para todos que se enquadrem no tipo numeral: BigDecimal, BigInteger, Byte, Double, Float, Integer, Long, Short
qual seria a forma mais “elegante” de fazer ?
como ficaria um método bem feito ?
todos esses tipos são classes derivadas da classe abstrata java.lang.Number,
Tudo isso o que? o try/catch? ou a regex?[/quote]
É que é assim:
tenho uma consulta no banco e quero que um campo só possa varrer o banco atras de uma informação, até agora tudo bem com String e como meu banco não tem Date, não me preocupei com ele, mas tem números.
por isso a questão,
se( digitado == int) {
varrer o banco com as colunas que são números
}
tentei usar o try, péssima ideia;
vamos tentar o regex
[quote=douglaskd]se eu quizer retornar true para todos que se enquadrem no tipo numeral: BigDecimal, BigInteger, Byte, Double, Float, Integer, Long, Short
qual seria a forma mais “elegante” de fazer ?
como ficaria um método bem feito ?
todos esses tipos são classes derivadas da classe abstrata java.lang.Number, [/quote]
As soluções apresentadas são para verificar se uma String possui caracteres numéricos.
Se quer saber se um objeto é um Number, use instanceof.