Comment obtenir le programme en C # pour réagir à l'entrée d'utilisateur

voix
-2

Donc, ci-dessous est le code que j'ai. Quand je frappe 5 je dois entrer 5 fois frapper pour obtenir le programme pour écrire la ligne et en appuyant sur 6 ne fonctionne pas du tout. Toute solution serait appréciée.

            Boolean keepRunning = true;
            while (keepRunning = true)
            {
                if (Console.ReadLine() == 1)
                {
                    Console.WriteLine(Still running);
                }
                else if (Console.ReadLine() == 2)
                {
                    Console.WriteLine(Still running2);
                }
                else if (Console.ReadLine() == 3)
                {
                    Console.WriteLine(Still running3);
                }
                else if (Console.ReadLine() == 4)
                {
                    Console.WriteLine(Still running4);
                }
                else if (Console.ReadLine() == 5)
                {
                    Console.WriteLine(Still running5);
                }
                else if (Console.ReadLine() == 6)
                {
                    keepRunning = false;
                }
            }
Créé 19/09/2018 à 12:59
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
8

Vous êtes en attente d'une entrer avec chaque Console.ReadLine();. Lisez l'entrée une seule fois et ensuite décider ce qu'il faut faire.

Et vous devriez changer votre état tout à keepRunning == true. Avec votre version actuelle vous définissez keepRunningà truevotre condition et c'est la raison pour laquelle il semble que « 6 » ne fonctionne pas;)

Boolean keepRunning = true;
while (keepRunning == true)
{
    string input = Console.ReadLine();

    if (input == "1")
    {
        Console.WriteLine("Still running");
    }
    else if (input == "2")
    {
        Console.WriteLine("Still running2");
    }
    else if (input == "3")
    {
        Console.WriteLine("Still running3");
    }
    else if (input == "4")
    {
        Console.WriteLine("Still running4");
    }
    else if (input == "5")
    {
        Console.WriteLine("Still running5");
    }
    else if (input == "6")
    {
        keepRunning = false;
    }
}

Vous pouvez utiliser une instruction switch pour le rendre encore meilleur.

switch(input)
{
    case "1":
        Console.WriteLine("Still running");
        break;
    case "2":
        Console.WriteLine("Still running");
        break;
    case "3":
        Console.WriteLine("Still running");
        break;
    case "4":
        Console.WriteLine("Still running");
        break;
    case "5":
        Console.WriteLine("Still running");
        break;
    case "6":
        keepRunning = false;
        break;
    default:
        break;
}
Créé 19/09/2018 à 13:01
source utilisateur

voix
0

Vous devriez lire en ligne une seule fois par itération. Voir l'exemple ci-dessous:

string readLine = "";
Boolean keepRunning = true;
while (keepRunning)
{
    readLine= Console.ReadLine();
    switch readLine{
        case "1":
            Console.WriteLine("Still running");
            break;
        case "2":
            Console.WriteLine("Still running2");
            break;
        case "3":
            Console.WriteLine("Still running3");
            break;
        case "4":
            Console.WriteLine("Still running4");
            break;
        case "5":
            Console.WriteLine("Still running5");
            break;
        case "6":
            keepRunning = false;
            break;
    }
}
Créé 19/09/2018 à 13:04
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more