2017-10-16 3 views
0

Comment est-ce que j'obtiens ceci pour faire une boucle vers le principal? Je suis nouveau à coder comme celui-ci, pour la plupart seulement des jeux que je code pour quelque chose comme cela ne devrait pas sembler trop dur, mais pour la vie de moi je ne peux pas obtenir à boucleComment est-ce que je peux obtenir cette boucle au début si la sélection par l'utilisateur n'est pas S, D ou Y?

static void Main(string[] args) 
    { 
     float Age = 0; 
     // ask whether age will be in years, days or seconds 
     Console.WriteLine("In what format would you like to enter your age? 
     S for Seconds, D for Days, Y for Years. "); 
     string choice = Console.ReadLine(); 
     // get choice 
     // if choose seconds 
     // get age 
     // multiply by the number of seconds in an earth year 
      if (choice == "s") 
      { 
       Console.WriteLine("Please enter your age in seconds"); 
       string number = Console.ReadLine(); 
       Age = Convert.ToInt32(number); 
      } 

      // if choose days 
      // get age 
      // multiply by the number of seconds in an earth year 
      if (choice == "d") 
      { 
       Console.WriteLine("Please enter your age in days"); 
       string number = Console.ReadLine(); 
       Age = Convert.ToInt32(number); 
       Age *= 86400; 
      } 

      // if choose years 
      // get age 
      // multiply by the number of seconds in an earth year 
      if (choice == "y") 
      { 
       Console.WriteLine("Please enter your age in years"); 
       string number = Console.ReadLine(); 
       Age = Convert.ToInt32(number); 
       Age *= 86400 * 365.25f; 
      } 
+1

Vous pouvez ajouter une variable booléenne nommée 'done', initialement définie sur false, et l'utiliser comme contrôle d'une boucle while qui entoure vos vérifications de réponse d'invite et d'utilisateur. Si l'utilisateur entre une entrée valide, définissez done sur true. par exemple. 'var done = false; while (! Done) { /* invite et vérifie les réponses; pour une réponse valide, définissez done = true; */ } ' – wablab

Répondre

0

besoin d'une boucle utilisateur Vous vérifier si l'entrée est déjà correcte:

bool correct; 
do 
{ 
    Console.WriteLine("In what format would you like to enter your age? " + 
     "S for Seconds, D for Days, Y for Years. "); 
    string choice = console.ReadLine(); 

    if(choice == "y") { ... correct = true; } 
    else if (choice == "s") { ... correct = true; } 
    else if (choice == "d") { ... correct = true; } 
    else correct = false; 
} while(!correct); 

la boucle do-while garantit que le code exécute au moins une fois et arrête lorsque la première entrée valide est donnée.

+0

Actuellement juste obtenir une erreur sur le mot correct dans while (! Correct); –

+0

@LiamFlanagan Et qui? Je ne suis pas un wizzard qui peut deviner votre erreur, mais je suis à peu près sûr que le compilateur vous saisit exactement quelle est l'erreur. – HimBromBeere

+0

@LiamFlanagan First: ne postez pas d'informations supplémentaires à votre question dans une réponse, il suffit de modifier votre question de manière appropriée. Deuxièmement: à partir de mon code, vous verrez que j'ai utilisé 'else/else if'-construct pour s'assurer que' correct' * will * definilty * aura une valeur. Vérifier si votre 'choix' est égal à' y' et ensuite vérifier si c'est égal à 'd' est un non-sens, n'est-ce pas? – HimBromBeere