terça-feira, 5 de fevereiro de 2013

otimizando conversão para valores numéricos

String para Inteiro
 
 /**
  * Método que retorna um Integer caso o parâmetro seja diferente de nulo e vazio
  * 
  * @param valor
  *            campo a ser convertido
  * @param defaultValue
  *            valor default caso ocorra erro
  * @return Integer
  *            valor convertido para Integer
  */
 public static Integer getInteger(String valor, Integer defaultValue) {
 try {
   
      int num  = 0;
      int sign = -1;
      final int len  = valor.length( );
      final char ch  = valor.charAt( 0 );
      if ( ch == '-' )
          sign = 1;
      else
          num = '0' - ch;

      int i = 1;
      while ( i < len )
          num = num*10 + '0' - valor.charAt( i++ );
 
      return sign * num;
      
 } catch (Exception e) {
      return defaultValue;
 }
 }

String para Long
 
/**
  * Método que retorna um Long caso o parâmetro seja diferente de nulo e vazio
  * 
  * @param valor
  *            campo a ser convertido
  * @param defaultValue
  *            valor default caso ocorra erro
  * @return Long
  *            valor convertido para Long
  */
 public static Long getLong(String valor, Long defaultValue) {
 try { 
      long num  = 0;
      long sign = -1;
      final long len  = valor.length( );
      final char ch   = valor.charAt( 0 );
      if ( ch == '-' )
          sign = 1;
      else
          num = '0' - ch;
 
      // Build the number.
      int i = 1;
      while ( i < len )
          num = num*10 + '0' - valor.charAt( i++ );
 
      return sign * num;
      
 } catch (Exception e) {
      return defaultValue;
 }
 }

String para Double
 
/**
  * Método que retorna um Double caso o parâmetro seja diferente de nulo e vazio
  * 
  * @param valor
  *            campo a ser convertido
  * @param defaultValue
  *            valor default caso ocorra erro
  * @return Double
  *            valor convertido para Double
  */
 public static Double getDouble(String valor, Double defaultValue) {
 try {

      double num  = 0;
      double sign = -1;
      final double len  = valor.length( );
      final char ch  = valor.charAt( 0 );
      if ( ch == '-' )
          sign = 1;
      else
          num = '0' - ch;
 
      // Build the number.
      int i = 1;
      while ( i < len )
          num = num*10 + '0' - valor.charAt( i++ );
 
      return sign * num;
      
} catch (Exception e) {
      return defaultValue;
}
}

Nenhum comentário:

Postar um comentário