循环不起来

问题描述 投票:0回答:1

这是我正在写的一个程序的一部分。我的主要问题是,一旦它经过其中一个案例,滴滴就不会循环,所以它是无用的,因为它是。有什么可以帮助我的吗?(对不起,我用西班牙语写了一些变量,还有几个我创建的函数出现在cose中,这些函数在程序中工作得很好,所以我不认为它们和这个问题有什么关系)。

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) ;

    }
c# loops switch-statement
1个回答
2
投票

我不认为你可以在这样的开关上循环.尝试做while分开。

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
投票

没有这样的结构。

switch
{

} while (...);

在C#中 你实际上写的是。

switch
{

}
while (...);

这也是另一种写法

switch
{

}

while (...)
{

}

我怀疑你想把你的switch语句放在一个while或者do...while循环里面。


0
投票

就像这样。

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

也可以看看这个 在C#中使用Switch语句的While循环


0
投票

这是个错误的代码,你有一个 switch() {} 声明 default 和那些 break导致你跌出它的范围),以及一个 while (condition) /*do nothing*/; 声明。

其目的是 do{switch(){}}while() ?

是时候做一些阅读了...

https:/docs.microsoft.comen-usdotnetcsharplanguag-referencekeywordsswitch

https:/docs.microsoft.comen-usdotnetcsharplanguage-referencekeywordswhile。

https:/docs.microsoft.comen-usdotnetcsharplanguag-referencekeywordsdo。


0
投票

你应该这样做:-

while (condition)
{
     switch
     {

     }
}
© www.soinside.com 2019 - 2024. All rights reserved.