Então pessoal. Eu criei uma classe com métodos que verificam se um número Inteiro ou Real é um número válido e retorna true ou false. Vou mandar o código fonte da classe para vocês darem uma opinião a respeito.
exemplo de uso:
String sReal = "";
while(!VerificadorDecimal.ehNumeroReal(sReal))
sReal = JOptionPane.showInputDialog("Digite um número real válido:");
Então, o método ehNumeroReal eh um método estático que recebe uma String e verifica se é um número real válido retornando uma boolean.
O método ehNumeroInteiro funciona da mesma maneira.
public class VerificadorDecimal
{
public static boolean ehNumeroInteiro(String s)
{
if(ehNulo(s))
return false;
if(emBranco(s))
return false;
if(!ehDigito(s.charAt(0))&&!ehSinal(s.charAt(0)))
return false;
for(int i = 1; i < s.length() ;i++)
{
if (!ehDigito(s.charAt(i)))
{
return false;
}
}
return true;
}
public static boolean ehNumeroReal(String s)
{
if(ehNulo(s))
return false;
if(emBranco(s))
return false;
if(!ehDigito(s.charAt(0))&&!ehSinal(s.charAt(0))&&!ehPonto(s.charAt(0)))
return false;
boolean tevePonto = false;
if(ehPonto(s.charAt(0)))
{
tevePonto = true;
if(s.length()==1)
return false;
}
if(ehSinal(s.charAt(0))&&ehPonto(s.charAt(1))&&s.length()==2)
return false;
for(int i = 1; i < s.length() ;i++)
{
if (!ehDigito(s.charAt(i))&&!ehPonto(s.charAt(i)))
{
return false;
}
if(ehPonto(s.charAt(i)))
{
if(tevePonto)
{
return false;
}
tevePonto = true;
}
}
return true;
}
private static boolean ehNulo(String s)
{
return s==null;
}
private static boolean ehPonto(char c)
{
return c=='.';
}
private static boolean ehDigito(char c)
{
return Character.isDigit(c);
}
private static boolean ehSinal(char c)
{
return c=='+'||c=='-';
}
private static boolean emBranco(String s)
{
return s.equals("");
}
}
NAO ESKEÇAM DE RESPONDER O TÓPICO DIZENDO O QUE ACHARAM OU SE MEU CÓDIGO FOI ÚTIL PARA VOCÊ.