viernes, 15 de noviembre de 2013

Validando números con tryparse en C#

Uno de los principales problemas de los programadores novatos a la hora de desarrollar es la validación de los datos de entrada, por ejemplo, si pedimos que el usuario ingrese una edad considerándola dentro de nuestro programa como un dato entero, no quisiéramos que introdujera cosas como: quince, -15 ó 15.6.

Lo lógico sería que al detectar un dato de entrada incorrecto repitiera el proceso de petición de datos, y así hasta obtener un dato de entrada correcto.

En el caso de la validación numérica en C# tenemos dos opciones parse y tryparse, hoy usaré la segunda por ser la menos utilizada y la mejor para estos casos, pero primero hablemos un poco de la función (o método) tryparse.

Al usar tryparse automáticamente se devuelve un valor booleano (true, false) dependiendo de si la conversión se pudo realizar o no. se necesitan dos parámetros al momento de invocarla: la cadena que tratará de convertir a número en el formato especificado, y la variable donde guardará el valor convertido en caso de no haber error.




La llamada completa al método tryparse quedaría así: boleano=tiponumero.tryparse(cadena, out entero); donde booleano, cadena y entero son variables declaradas por el programador de ese tipo, tiponumero será int, float, single, double, y out es una palabra reservada para indicar que la variable es donde se almacenará la salida.

Pero bien sin más preámbulos vamos a ver un ejemplo de programa que valida una entrada de un dato entero;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace validanumeros
{
    class Program
    {
        static void Main(string[] args)
        {
            int x; //variable para leer el número
            bool sisepudo; //esta nos dice si es un número válido
            do //iniciamos ciclo do-while
            {
                Console.WriteLine("Teclea un número entero:"); //pedimos el número
                sisepudo=int.TryParse(Console.ReadLine(),out x); //almacenamos true si la conversión se realizó
                if (!sisepudo) //este if es solo para mostrar un mensaje de error si no se realizó la conversión
                    Console.WriteLine("¡¡¡Numero incorrecto!!!");
            }while(!sisepudo); //repite mientras el resultado de la conversión sea falso

            Console.WriteLine("El numero {0} es válido",x);
            Console.ReadKey();
        }
    }
}


Bien eso esto por ahora y nos leemos luego!!!!!!

4 comentarios:

  1. Gracias por explicar esto!! Me aclaraste varias dudas!!

    ResponderEliminar
  2. este signo < !sisepudo > q significa me podria ayudar

    ResponderEliminar
    Respuestas
    1. El signo de exclamación de cierre (!) significa negación en programación y "sisepudo" es una variable boleana (solo acepta valores de verdadero o falso) al juntarlo lo que estamos preguntado en el condicional es si no se pudo hacer la conversión saludos

      Eliminar
  3. Me sirvió muchísimo! Te lo agradezco!

    ResponderEliminar