0
votes

Comment fournir un message différent à l'utilisateur après la première sortie de la boucle?

Donc, je demande à l'utilisateur son nom, puis de poser la question à nouveau si elle a été jugée incorrecte par l'utilisateur. Mais après avoir dit qu'il est faux, je voudrais dire quelque chose comme "Toutes mes excuses, quel est le nom correct?". Mais en le mettant dans le faire pendant que la boucle le ferait dire que la première fois qui n'a aucun sens. Je voudrais que cela le dise après la première entrée incorrecte et à chaque fois. xxx


1 commentaires

IMO, le logiciel ne devrait pas s'excuser pour une erreur utilisateur.


4 Réponses :


0
votes

Si vous stockez votre invite dans une variable de chaîne, vous pouvez le changer après la première fois. Assurez-vous simplement de mettre ce changement d'un conditionnel afin que vous ne finissez pas de reconstruire une nouvelle chaîne immuable à chaque fois à travers la boucle.

        string nameCorrect;
        string playerName;
        string namePrompt = "What is your name?";

        do
        {
            Console.WriteLine(namePrompt);
            if (namePrompt == "What is your name?") namePrompt = "Apologies, what is the correct name?"
            playerName = Console.ReadLine();

            Console.WriteLine("Is {0} correct?", playerName);
            nameCorrect = Console.ReadLine();

        } while(nameCorrect == "No");

        if(nameCorrect == "Yes")
        {
            Console.WriteLine("Great, lets move on.");
        }



        Console.ReadKey();


1 commentaires

Votre chèque si n'est pas requis. Les littéraux à chaîne sont Interné dans .NET, donc un "nouveau" La chaîne n'est pas créée chaque itération de toute façon. Il ne s'agit que de reporter la même chaîne en mémoire.



3
votes

Utilisez simplement une variable que vous pouvez mettre à jour après la première itération: xxx


0 commentaires

1
votes

Gardez simplement une trace de combien de fois ils l'ont tenté:

string nameCorrect;
string playerName;
int attempt = 0;

do
{
    Console.WriteLine(attempt > 0
        ? "Apologies, what is the correct name?"
        : "What is your name?");
    playerName = Console.ReadLine();

    Console.WriteLine("Is {0} correct?", playerName);
    nameCorrect = Console.ReadLine();

    attempt++;
} while(nameCorrect == "No");

if(nameCorrect == "Yes")
{
  Console.WriteLine("Great, lets move on.");
}

Console.ReadKey();


0 commentaires

0
votes
string nameQuestion = "What is your name?";
string name = string.Empty;
bool needName = true;

do {
   Console.WriteLine(nameQuestion);
   name = Console.ReadLine();
   Console.WriteLine($"Is {name} correct?");

   if (Console.ReadLine().ToLower().Equals("yes")) {
      needName = false;
   }
   else {
      nameQuestion = "Apologies, what is the correct name?";
   }
} while (needName);

Console.WriteLine("Great, lets move on.");
Console.ReadKey();

0 commentaires