Pregunta

Lo que quiero hacer es que cuando las personas que usan mi programa golpean Enter sin nada allí, no causa un error aquí es parte del programa:

Console.WriteLine("4.-Ya no quiero jugar >.<");
int opc = Convert.ToInt16(Console.ReadLine());

switch (opc)
{
    case 1:
        Console.WriteLine("omg");
        break;

    case 2:
        Console.WriteLine("wtf");
        break;

    default:
        Console.WriteLine("Cant do that  >.>");
        Console.ReadKey();
        break;

    etc.
}

La cosa es que estoy usando enteros, intenté hacer esto

string opc1=console.readline();

if (opc =="")
{
    console.writeline("nope,try again");
}
else
{ // Brace was omitted in original - Jon
    int opc = Convert.ToInt16(Console.ReadLine());

    switch (opc)

    blah blah.

y diferentes combinaciones de él>. <y el valor predeterminado no funciona para eso

Espero que alguien pueda ayudarme a resolverlo>.

¿Fue útil?

Solución

Primero, configure su Console.ReadLine() a una variable. Luego verifique si la variable que establece no está vacía o nula. Además, recomendaría usar el método TryParse de la clase INT16 porque devuelve verdadero o falso dependiendo de si la conversión fue exitosa.

Además, no necesita convertir su ReadLine a un entero, porque también puedes encender cadenas. Ya que ReadLine ya es un String, no es necesaria la conversión. Sin embargo, si necesita enteros, intente esto:

String lineIn = Console.ReadLine();

if (!String.IsNullOrEmpty(lineIn))
{
    Int16 myNum;
    if (Int16.TryParse(lineIn , out myNum))
    {
            switch(myNum)
            {
                    case 1:
                    ...
                    default:
                    ...
            }
    }
}

Otros consejos

Comprobar el Int16.TryParse método.

Esto le permitirá salir del programa o realizar otra acción si la entrada del usuario no es un número en el rango permitido por Int16 (Negativo 32768 a través de 32767 positivo).

El código de muestra se puede encontrar en la entrada MSDN (Int16.tryParse Method).

Creo que lo que quieres es int.parse (...)

Puede considerar usar un trata de atraparlo Declaración para el manejo de errores ...

TryParse:

string str;
short val;
while(!short.TryParse(str=Console.ReadLine(), out val))
{
    Console.WriteLine("Cant do that  >.>");
}

Para obtener un entero, generalmente uso una función recursiva como esta

private int GetInt()
{
     try
     {
         return int.parse(Console.Readline().Trim());
     } 
      catch (exception e) 
     {
         Console.WriteLine(string.format("{0} Please try again", e.message);
         return GetInt();
     }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top