переключение, пока не будет зацикливаться - PullRequest
0 голосов
/ 29 мая 2020

Это часть программы, которую я пишу. Моя главная проблема в том, что как только он проходит через один из случаев, tit не будет l oop, так что это уже бесполезно. Любая помощь? (Извините за переменные в Spani sh, также пара функций, которые я создал, появляются в коде, которые находятся в программе и работают нормально, поэтому я не думаю, что они имеют какое-либо отношение к проблеме).

static void Main(string[] args)
    {
        int minutos_restantes = 480;
        int opcion;
        int valorComercial = 0;
        Tarea[] listado_tareas = new Tarea[10];

        CrearTareas(ref listado_tareas);

        Console.WriteLine("1. Mostrar tareas. \n2. Asignar tarea \n3. Salir, \n Elige opción: ");
        opcion = Convert.ToInt32(Console.ReadLine());

        switch (opcion)
        {
            case 1:
                Imprimirtareas(listado_tareas);
                break;

            case 2:
                Console.WriteLine("Seleccionar número de tarea: ");
                int n = Convert.ToInt32(Console.ReadLine())-1;

                if (n < 0 || n > 10)
                {
                    Console.WriteLine("TAREA INEXISTENTE");
                }

                else if (listado_tareas[n].realizada == true)
                {
                    Console.WriteLine("TAREA YA REALIZADA");
                }

                else if((minutos_restantes - listado_tareas[n].tiempo) <= 0)
                {
                    Console.WriteLine("TIEMPO INSUFICIENTE");
                }

                else
                {
                    listado_tareas[n].realizada = true;
                    minutos_restantes -= listado_tareas[n].tiempo;
                }

                break;
        } while (opcion != 3) ;

    }

Ответы [ 5 ]

2 голосов
/ 29 мая 2020

Я не думаю, что вы можете oop использовать такой переключатель. Попробуйте сделать это отдельно:

do
{
    switch (opcion)
    {
        case 1:
            Imprimirtareas(listado_tareas);
            break;

        case 2:
            Console.WriteLine("Seleccionar número de tarea: ");
            int n = Convert.ToInt32(Console.ReadLine())-1;

            if (n < 0 || n > 10)
            {
                Console.WriteLine("TAREA INEXISTENTE");
            }

            else if (listado_tareas[n].realizada == true)
            {
                Console.WriteLine("TAREA YA REALIZADA");
            }

            else if((minutos_restantes - listado_tareas[n].tiempo) <= 0)
            {
                Console.WriteLine("TIEMPO INSUFICIENTE");
            }

            else
            {
                listado_tareas[n].realizada = true;
                minutos_restantes -= listado_tareas[n].tiempo;
            }

            break;
    } 

}while (opcion != 3) ;
1 голос
/ 29 мая 2020

Такой конструкции нет:

switch
{

} while (...);

В C#. На самом деле вы написали:

switch
{

}
while (...);

Это еще один способ написания

switch
{

}

while (...)
{

}

Я подозреваю, что вы хотите поместить свой оператор switch внутрь while или do ... а l oop.

0 голосов
/ 29 мая 2020

Вам необходимо сделать: -

while (condition)
{
     switch
     {

     }
}
0 голосов
/ 29 мая 2020

Это неработающий код. У вас есть оператор switch() {} (без default, и эти break s заставляют вас выпасть из его области действия) и оператор while (condition) /*do nothing*/;.

Намерение: do{switch(){}}while()?

Пора почитать ...

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/switch

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/while

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/do

0 голосов
/ 29 мая 2020

Go для чего-то вроде этого:

int opcion = 0;
do
{
    opcion = Convert.ToInt32(Console.ReadLine());
    switch (opcion)
    {
        ...
    }
} while (opcion != 3);

Также проверьте это: В то время как L oop in C# с оператором Switch

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...