[ Foro de C# ]

Detectar si es numero o carácter

28-Jan-2014 04:00
Francisco Ruiz
3 Respuestas

Hola a todos, soy nuevo en el foro y este es mi problema:

Como puedo desarrollar una pequeña aplicación en consola en la cual esta me pida insertar solo 1 carácter con el teclado y detectar si es un valor numérico o un carácter sin valor numérico, y si es un valor numérico convertirlo a Tipo Single para que sea usado mas tarde.

El valor numérico a convertir también tiene que ser decimal.

Muchas gracias y un saludo. espero pronto su respuesta.


28-Jan-2014 12:18
Nacho Cabanes (+30)

La forma más segura de leer datos en guardándolos con un string, de modo que no falle si el usuario introduce más de una letra. Después, tomas la primera letra con [0] y miras si está en el rango de las cifras numéricas:

 
string texto = Console.ReadLine();
bool esNumero = false;
float dato = 0;
if ((texto.Length > 0) && (texto[0] >= '0') && (texto[0] <= '9'))
    esNumero = true;
if (esNumero)
    dato = Convert.ToSingle(texto);
 



29-Jan-2014 00:16
Francisco Ruiz

Gracias por la respuesta, ya lo implementé en mi sumadora de números.
Este es el código que me pasaste pero mejorado.

 
            string texto = Console.ReadLine();
 
            bool condicion = false;
            float suma = 0;
 
 
            if ((texto.Length > 0) && (texto[0] >= '0') && (texto[0] <= '9'))
                condicion = true;
 
            if (condicion)
            {
                suma = Convert.ToSingle(texto);
                Console.WriteLine("Es numero");
                Console.ReadLine();
            }
            else
            {
                Console.WriteLine("Es texto");
                Console.ReadLine();
            }
 



29-Jan-2014 01:21
Nacho Cabanes (+30)

Que sepas que si llegas a ser alumno mío y haces que una condición se llame "condicion" en vez de algo más autoexplicativo, como por ejemplo "esNumerico", tendrías 37 millones de puntos menos en este ejercicio (poco más o menos)...  ;-D






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)