J'essaye de créer le menu pour un jeu de cerveau qui peut être exécuté dans une invite de commande en utilisant C #. Le problème que je rencontre est de capturer les entrées des utilisateurs pour le menu. S'ils entrent un 2, cela devrait indiquer qu'ils ont entré le numéro deux et sinon, cela indiquerait qu'ils n'ont pas affiché le numéro deux.

Le problème que je rencontre est qu'il ne transformera pas l'entrée des utilisateurs en un entier de travail et qu'il viendra soit dire qu'il ne peut pas convertir explicitement de System.ConsoleKeyInfo en int ou chaîne en int.

using System;

namespace MasterMind
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("               MasterMind's Main Menu");
            Console.WriteLine("                    1: Play");
            Console.WriteLine("                    2: Help");
            Console.WriteLine("                    0: Exit");
            int userinput = Console.ReadKey();
            if (Nuserinput == 2);
            {
                Console.WriteLine("This is a number 2");
            }
            else
            {
                Console.WriteLine("This is not a number 2");
            }
        }
    }
}
c#
2
Ben Reilly 20 avril 2017 à 19:05

3 réponses

Meilleure réponse

Change ton

int userinput = Console.ReadKey();
if (Nuserinput == 2)

À:

string userInput = Console.ReadKey().KeyChar.ToString();
if(input == "2")

Ou convertissez la chaîne en un entier comme indiqué dans d'autres réponses. Mais pour cela, une chaîne fonctionne très bien.

0
EpicKip 20 avril 2017 à 16:33

Console.ReadKey() renvoie un ConsoleKeyInfo, vous devrez donc faire quelque chose comme ceci:

ConsoleKeyInfo data = Console.ReadKey();
int num;
if (int.TryParse(data.KeyChar.ToString(), out num) && num == 2)
{
    Console.WriteLine("This is a number 2");
}else{
    Console.WriteLine("This is not a number 2");
}
3
Ousmane D. 20 avril 2017 à 16:09

Console.ReadKey() renvoie un ConsoleKeyInfo objet, qui n'est pas un objet int. Vous pouvez obtenir un char à partir de cela, par exemple:

var key = Console.ReadKey();
var keyChar = key.KeyChar;

Si vous vous attendez à ce que la valeur char représente un entier, vous pouvez la convertir en un:

int keyInt = (int)Char.GetNumericValue(keyChar);

En plus des autres vérifications d'erreurs que vous voudrez peut-être mettre en place au cas où l'utilisateur n'entrerait pas un entier valide, cela obtiendrait au moins la valeur entière que vous recherchez.

5
David 20 avril 2017 à 16:11