Bonjour, Je pratique le "Switch Loop" dans un programme. Et je crée un code où un utilisateur peut entrer l'entier et après que l'utilisateur aura entré l'entier, il affichera aussi ce que l'utilisateur vient de taper. Maintenant, j'essaie d'implémenter où le programme demandera à l'utilisateur d'entrer le numéro à nouveau en sélectionnant le Y/N. Je l'ai déjà inclus ici dans mon code mais si je tape des caractères la première fois que le programme me demande de taper un entier, le programme exécutera la partie catch. Comment puis-je faire que si l'utilisateur va taper un caractère, il affichera à nouveau le message, "s'il vous plaît entrer l'entier:"instruction switch
Merci pour votre aide, je suis perdu dans quelque part ici.
int enterYourNumber;
char shortLetter;
try
{
Console.WriteLine("Please enter the integer: ");
enterYourNumber = Convert.ToInt32(Console.ReadLine());
WriteNumber(enterYourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
while (shortLetter == 'y' || shortLetter == 'Y')
{
Console.WriteLine("Please enter the integer: ");
enterYourNumber = Convert.ToInt32(Console.ReadLine());
WriteNumber(enterYourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
}
}
catch
{
Console.WriteLine("Please enter an integer not a character");
}
}
public static void WriteNumber(int wordValue)
{
switch (wordValue)
{
case 1:
Console.WriteLine("You have entered number one");
break;
case 2:
Console.WriteLine("You have entered number two");
break;
case 3:
Console.WriteLine("You have entered number three");
break;
default:
Console.WriteLine("You have exceeded the range of number 1-3 ");
break;
}
======================
C'est ce que je l'ai fait, je ne sais pas pourquoi je reçois une erreur . La nouvelle méthode ne semble pas fonctionner:
int enterYourNumber;
char shortLetter;
do
{
enterYourNumber = GetNumber();
WriteNumber(enterYourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
}
while (shortLetter == 'y' || shortLetter == 'Y')
{
Console.WriteLine("Please enter the integer: ");
enterYourNumber = Convert.ToInt32(Console.ReadLine());
WriteNumber(enterYourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
}
}
public static int GetNumber()
{
bool done = false;
int value;
while (!done)
{
Console.WriteLine("Please enter the integer: ");
try
{
value = Convert.ToInt32(Console.ReadLine());
done = true;
}
catch
{
Console.WriteLine("Please enter an integer not a character");
}
}
}
=============
Salut Bill est ce que vous avez donné l'exemple et il semble que je suis toujours obtenir une erreur : pourriez-vous s'il vous plaît le code. Merci beaucoup:
public static void Main(string[] args)
{
int enterYourNumber;
char shortLetter;
do
{
enteryourNumber = GetNumber();
WriteNumber(enteryourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
}
while (shortLetter == 'y' || shortLetter == 'Y');
}
public static int GetNumber()
{
bool done = false;
int value;
while (!done)
{
Console.WriteLine("Please enter the integer: ");
try
{
value = Convert.ToInt32(Console.ReadLine());
done = true;
}
catch
{
Console.WriteLine("Please enter an integer not a character");
}
Console.WriteLine("Please enter the integer: ");
enterYourNumber = Convert.ToInt32(Console.ReadLine());
WriteNumber(enterYourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
}
}
public static void WriteNumber(int wordValue)
{
switch (wordValue)
{
case 1:
Console.WriteLine("You have entered number one");
break;
case 2:
Console.WriteLine("You have entered number two");
break;
case 3:
Console.WriteLine("You have entered number three");
break;
default:
Console.WriteLine("You have exceeded the range of number 1-3 ");
break;
}
}
}
}
=================
Salut à nouveau cette question est pour Robert. C'est ce que j'ai fait maintenant, mais si j'entre "N", il ne quittera pas le programme. Il posait toujours la même question. Toute idée: Merci:
public static void Main(string[] args)
{
int enterYourNumber;
char shortLetter;
bool validEntry;
while (true)
{
do
{
Console.WriteLine("Please enter an integer: ");
string numberString = Console.ReadLine();
validEntry = int.TryParse(numberString, out enterYourNumber);
WriteNumber(enterYourNumber);
if (!validEntry)
{
Console.WriteLine("Entry must be an integer");
}
} while (!validEntry);
Console.WriteLine("Do you still want to enter a number? Y/N");
shortLetter = Convert.ToChar(Console.ReadLine());
}
}
public static void WriteNumber(int wordValue)
{
switch (wordValue)
{
case 1:
Console.WriteLine("You have entered number one");
break;
case 2:
Console.WriteLine("You have entered numbered two");
break;
case 3:
Console.WriteLine("You have entered numbered three");
break;
default:
Console.WriteLine("You have exceeded the range of number 1-3");
break;
}
}
}
}
================================= Salut Robert et Bill voici ce que j'ai obtenu maintenant. J'apprécierais que vous puissiez donner quelques idées sur la façon d'améliorer le codage. Merci de votre aide.
public static void Main(string[] args)
{
int intEnterYourNumber;
char charShortLetter;
string strUserInput;
do
{
do
{
Console.WriteLine("Please enter the integer: ");
strUserInput = Console.ReadLine();
} while (!int.TryParse(strUserInput, out intEnterYourNumber));
WriteNumber(intEnterYourNumber);
Console.WriteLine("Do you still want to enter a number? Y/N");
charShortLetter = Convert.ToChar(Console.ReadLine().ToUpper());
} while (charShortLetter == 'Y');
}
public static void WriteNumber(int wordValue)
{
switch (wordValue)
{
case 1:
Console.WriteLine("You have entered number one");
break;
case 2:
Console.WriteLine("You have entered numbered two");
break;
case 3:
Console.WriteLine("You have entered numbered three");
break;
default:
Console.WriteLine("You have exceeded the range of number 1-3");
break;
}
}
merci uncleo celui-ci fonctionne plutôt bien. Je ne suis toujours pas avec la déclaration "Do-WHiLe" donc je dois revoir cela et comprendre la logique. Parce que dans mon code précédent, il semble que ce soit assez redondant et je pense que c'est ce dont j'ai besoin. – tintincutes
La clé de l'instruction Do While est que, dans les programmes qui requièrent une entrée de l'utilisateur, placer le While en bas garantit que la boucle s'exécute au moins une fois et que l'utilisateur doit entrer au moins une fois. Vous n'écrirez pas toujours vos boucles While de cette façon. La plupart du temps, vous ne voulez entrer dans la boucle que si la condition While est satisfaite. –
uncleo J'ai encore essayé votre travail le premier "shortletter == null" ne peut pas être exécuté car Null ne peut pas être converti en char. Et la deuxième capture (FormatException) ne fonctionne pas aussi bien. – tintincutes