7
votes

C # si sinon, commutateur, bool

im essayant de coder une simple aventure de texte. Lorsque j'ai commencé à coder les instructions, un utilisateur peut s'adresser à j'ai réalisé que l'utilisateur pourrait mettre dans "le nord-est", "sud-ouest", etc., donc je pensais que je devrais faire des cas pour eux.

Mon problème est Case5 "Nord-Est" ne fonctionne pas lorsque j'entraîne "nord-est" dans la ligne de commande. xxx


1 commentaires

Vous devriez essayer d'utiliser le mode de débogage et les points d'arrêt pour diagnostiquer des problèmes tels que celui-ci.


4 Réponses :


13
votes

Parce que l'entrée contient du Nord, donc d'abord, si elle est exécutée et ne recherchez pas d'autre si, essayez d'inverser si elle est et placez Case5 comme :) XXX


1 commentaires

Je n'enversais pas la logique, plutôt simplement de déplacer la dernière déclaration pour être le premier - par exemple. "Si (cas5) ...; sinon si (cas1) ...; ...". N'importe quel pouce vers le haut.



2
votes

"nord-est" xxx


0 commentaires

1
votes

Il ne peut pas fonctionner parce que vous demandez "contient le nord" comme la première question? la réponse est oui. Le détroit de votre démarrage à l'étape 1. Vous n'arrivez pas à l'étape 5.

Pour arriver à l'étape 5, vous devez le demander d'abord. P>

De toute façon, il semble qu'il y ait plus de problèmes dans le code. Je ne sais pas ce que vous essayez de réaliser, mais il semble que vous compliquez les choses sans raison. P>

Je ferais quelque chose de similaire à celui suivant: P>

List<string> eastWest = new List<string> {"east", "west"};
            var up = new List<string> {"north", "south"};
            var direction = Console.ReadLine();
            var upDirection = up.Find(direction.Contains);
            var sideDirection = eastWest.Find(direction.Contains);
            var result = upDirection != null ? upDirection + " " + sideDirection:sideDirection;
            Console.WriteLine("You are headed" + result);


0 commentaires

4
votes

Bien que cela ait été répondu, je ferais mon observation:

Vos booléens sont inutiles et aident à cacher le problème. P>

Par exemple: P>

        string input = Console.ReadLine();

        if (input.Contains("north") && input.Contains("east")) 
            Console.WriteLine("\nyou head north east");
        else if (input.Contains("north")) 
            Console.WriteLine("\nyou head north");
        else if (input.Contains("east")) 
            Console.WriteLine("\nyou head east");
        else if (input.Contains("south")) 
            Console.WriteLine("\nyou head south");
        else if (input.Contains("west"))                    
            Console.WriteLine("\nyou head west");
        else 
            Console.WriteLine("enter a valid direction");


2 commentaires

Merci, im nouveau avec codage, mais cela le rend clair. Je suis vraiment surpris de savoir à quel point le code inutile est dans mon programme, ce que j'ai fait était un peu piraté ensemble, mais ses affaires comme celle-ci qui m'aide à avancer.


Heureux d'être utile :) Il ne s'applique pas dans cette situation particulière, mais assurez-vous d'être bien versé dans les tableaux et les boucles avant d'aller trop loin - ils vous aideront massivement sur la piste.