Une option consisterait à accepter une seule ligne d'entrée sous forme de chaîne, puis à la traiter. Par exemple:
//Read line, and split it by whitespace into an array of strings
string[] tokens = Console.ReadLine().Split();
//Parse element 0
int a = int.Parse(tokens[0]);
//Parse element 1
int b = int.Parse(tokens[1]);
Un problème avec cette approche est qu'il échouera (en jetant un IndexOutOfRangeException
/FormatException
) si l'utilisateur ne saisit pas le texte dans le format attendu. Si cela est possible, vous devrez valider l'entrée.
Par exemple, avec des expressions régulières:
string line = Console.ReadLine();
// If the line consists of a sequence of digits, followed by whitespaces,
// followed by another sequence of digits (doesn't handle overflows)
if(new Regex(@"^\d+\s+\d+$").IsMatch(line))
{
... // Valid: process input
}
else
{
... // Invalid input
}
Autre possibilité:
- Vérifiez que l'entrée se divise en exactement 2 cordes.
- Utilisez
int.TryParse
à pour d'analyser les chaînes en nombres.