web-dev-qa-db-fra.com

Comment demander à l'utilisateur une entrée en C #

Je passe de Python à C # et je rencontre des problèmes avec la fonction ReadLine(). Si je veux demander à un utilisateur d'entrer Python, je l'ai fait comme ceci:

x = int(input("Type any number:  ")) 

En C #, cela devient:

int x = Int32.Parse (Console.ReadLine()); 

Mais si je tape ceci, je reçois une erreur:

int x = Int32.Parse (Console.ReadLine("Type any number:  "));

Comment demander à l'utilisateur de taper quelque chose en C #?

4
user7316312

Vous devriez changer ceci:

int x = Int32.Parse (Console.ReadLine("Type any number:  "));

pour ça:

Console.WriteLine("Type any number:  "); // or Console.Write("Type any number:  "); to enter number in the same line
int x = Int32.Parse(Console.ReadLine());

Mais si vous entrez une lettre (ou un autre symbole qui ne peut pas être analysé comme int), vous obtiendrez une Exception. Pour vérifier si la valeur entrée est correcte:

(Meilleure option):

Console.WriteLine("Type any number:  ");
int x;
if (int.TryParse(Console.ReadLine(), out x))
{
    //correct input
}
else
{
    //wrong input
}
6
Roman Doskoch
Console.WriteLine("Type any number");
string input = Console.ReadLine();
int x;
if (int.TryParse(input, out x))
{
    //do your stuff here
}
else
{
    Console.WriteLine("You didn't enter number");
}
0
Nino

Pour être plus générique, je vous suggèrerais de créer un objet supplémentaire (car vous ne pouvez pas étendre des objets statiques en C #) afin qu'il se comporte comme vous l'avez spécifié.

public static class ConsoleEx
{
    public static T ReadLine<T>(string message)
    {
        Console.WriteLine(message);
        string input = Console.ReadLine();
        return (T)Convert.ChangeType(input, typeof(T));
    }
}

Bien entendu, ce code n’est pas exempt d’erreurs car il ne contient aucune contrainte sur le type de sortie, mais il sera néanmoins converti dans certains types sans aucun problème.

Par exemple. En utilisant ce code:

static void Main()
{
    int result = ConsoleEx.ReadLine<int>("Type any number: ");
    Console.WriteLine(result);
}

>>> Type any number: 
<<< 1337
>>> 1337 

Vérifiez ceci en ligne

0
Mateusz
Console.WriteLine("Type any number: ");
string str = Console.ReadLine();
Type a = Type.Parse(str);

où Type correspond au type de données vers lequel vous souhaitez convertir l'entrée utilisateur. Je suggère de lire quelques livres sur les bases de C # avant de me tourner vers les forums. 

0
Vivek