Criar uma Função para Validar campo Long [Resolvido]

Bom dia pessoal alguem poderia me ajudar a criar uma função para validar um campo Long exemplo:
Preciso recebe uma string e depois converter para Long… se na String conter texto preciso que dê uma mensagem de erro
agora se a string conter somente números preciso que converta para Long…
Comecei assim:

    public Long validarLog(String log) {
        Long valor = null;
        
        if(log != null) {
            valor = Long.parseLong(log);
        }
        else {
            
        
        }
        
        return valor;
    
    }

Baixe o jar commons-lang da apache.
Coloque-o no classpath do teu projeto.
Chame o método (função é algo da programação estruturada) NumberUtils.isNumber e passe a String em questão como argumento, obtenha o resultado, que é um boolean em uma variável específica.
Se true, significa que é um número (possui, entre seus caracteres, os dígitos de 0 a 9 ou ponto). Se false, possui qualquer coisa além de ponto ou dígitos de 0 a 9.
Pronto!

[quote=drsmachado]Baixe o jar commons-lang da apache.
Coloque-o no classpath do teu projeto.
Chame o método (função é algo da programação estruturada) NumberUtils.isNumber e passe a String em questão como argumento, obtenha o resultado, que é um boolean em uma variável específica.
Se true, significa que é um número (possui, entre seus caracteres, os dígitos de 0 a 9 ou ponto). Se false, possui qualquer coisa além de ponto ou dígitos de 0 a 9.
Pronto![/quote]

Obrigado pela resposta… mas eu gostaria de aprender a criar meu próprio método…

A maneira mais rápida (é mais rápida que usar uma expressão regular, por exemplo!) de determinar se algo pode ser convertido para Long é tentar converter para Long. Se tomar uma exceção, então não dá para converter e ponto final. Algo como:

public boolean isNumeric (final String str) {
    if (str == null) return false;
    try {
        Long.parseLong (str); 
    } catch (NumberFormatException ex) {
        return false;
    }
    return true;
}

Pode medir e ver que é a solução mais rápida.

[quote=entanglement]A maneira mais rápida (é mais rápida que usar uma expressão regular, por exemplo!) de determinar se algo pode ser convertido para Long é tentar converter para Long. Se tomar uma exceção, então não dá para converter e ponto final. Algo como:

public boolean isNumeric (final String str) {
    if (str == null) return false;
    try {
        Long.parseLong (str); 
    } catch (NumberFormatException ex) {
        return false;
    }
    return true;
}

Pode medir e ver que é a solução mais rápida.
[/quote]

Então ai vc está retornando true ou false… eu to precisando retornar o Long convertido… ou a mensagem de erro… abraço!

Use só o parseLong então, ué… é exatamente isso que ele faz.

Use só o parseLong então, ué… é exatamente isso que ele faz.[/quote]

Então mas eu quero colocar a minha mensagem… Ex: Não foi possível converter, digite somente números!

Use só o parseLong então, ué… é exatamente isso que ele faz.[/quote]

Então mas eu quero colocar a minha mensagem… Ex: Não foi possível converter, digite somente números![/quote]
Ok, já que quer inventar a tua própria roda…

public Long converteParaLong(String str) throws Exception{
   try{
      return Long.parseLong(str);
  }catch(Exception e){
    throw new Exception("Eu quis reinventar a roda e não usar algo que está pronto, ocorre que houve problema na conversão e por isto você recebeu esta mensagem");
  }
}

Use só o parseLong então, ué… é exatamente isso que ele faz.[/quote]

Então mas eu quero colocar a minha mensagem… Ex: Não foi possível converter, digite somente números![/quote]
Ok, já que quer inventar a tua própria roda…

public Long converteParaLong(String str) throws Exception{ try{ return Long.parseLong(str); }catch(Exception e){ throw new Exception("Eu quis reinventar a roda e não usar algo que está pronto, ocorre que houve problema na conversão e por isto você recebeu esta mensagem"); } } [/quote]

kkkkkkkkkkkkkkkkkkkkkkk poxa valeu era isso mesmo que estava precisando… obrigado :slight_smile: :slight_smile: :slight_smile:

Use só o parseLong então, ué… é exatamente isso que ele faz.[/quote]

Então mas eu quero colocar a minha mensagem… Ex: Não foi possível converter, digite somente números![/quote]
Só tome cuidado com a sua mensagem de erro: digite somente números, vai depender da sua definição de número.

O método parseLong não consegue converter uma String com valor “1.1” por exemplo.

Use só o parseLong então, ué… é exatamente isso que ele faz.[/quote]

Então mas eu quero colocar a minha mensagem… Ex: Não foi possível converter, digite somente números![/quote]
Ok, já que quer inventar a tua própria roda…

public Long converteParaLong(String str) throws Exception{ try{ return Long.parseLong(str); }catch(Exception e){ throw new Exception("Eu quis reinventar a roda e não usar algo que está pronto, ocorre que houve problema na conversão e por isto você recebeu esta mensagem"); } } [/quote]

kkkkkkkkkkkkkkkkkkkkkkk poxa valeu era isso mesmo que estava precisando… obrigado :slight_smile: :slight_smile: :slight_smile: [/quote]