2016-04-30 9 views
0

Wie bekomme ich das Programm von Anfang an zurück, wenn die falsche Nummer ausgewählt wird? Ich bin mir nicht sicher, was ich falsch mache. Ich habe versucht, if s, do while s, while s, und if else s:Zufallszahlengenerator fehlgeschlagen

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ArrayProblms 
{ 
    class Program 
    { 
     public static void Main(string[] args) 
     { 
      Console.WriteLine("Guess a number between 1 and 10: "); 
      RandomNumberGenerator(); 
      Console.ReadLine(); 
     } 

     public static void RandomNumberGenerator() 
     { 
      Random rand = new Random(); 
      int userValue = int.Parse(Console.ReadLine()); 
      int randValue = rand.Next(1, 11); 
      int attempts = 0; 

      if (userValue == randValue) 
      { 
       Console.WriteLine("You have guessed correctly!"); 
      } 
      while (userValue != randValue) 
      { 
       Console.WriteLine("You have guessed incorrectly"); 
       attempts++; 
       Console.WriteLine("You have made {0} incorrect guesses", attempts); 
       break; 
      } 
     } 
    } 
} 
+0

was ist die Bedingung, um das Programm zu beenden und was ist die Bedingung, eine Schleife durch immer wieder? –

Antwort

0

würde ich do...while verwendet Benutzer weiterhin fragen, die neue Nummer einzugeben, bis er richtig geraten.

Beispiel unten:

public static void RandomNumberGenerator() 
{ 
    Random rand = new Random(); 

    int randValue = rand.Next(1, 11); 
    int attempts = 0; 

    // do...while cycle to ask user to enter new value each time the used has been wrong 
    do 
    { 
     // read user input 
     int userValue = int.Parse(Console.ReadLine()); 

     // if user guessed correct 
     if (userValue == randValue) 
     { 
      Console.WriteLine("You have guessed correctly!"); 
      // go away from do...while loop 
      // it will stop asking user and will exit from the method 
      break; 
     } 

     // if user has been wrong 
     Console.WriteLine("You have guessed incorrectly"); 
     // increment attempts count 
     attempts++; 
     Console.WriteLine("You have made {0} incorrect guesses", attempts); 
    } 
    // and repeat until user guessed correctly 
    while(userValue != randValue) 
} 
+1

'Versuchen Sie Folgendes:' erklärt nichts. Müssen wir die Codes Zeile für Zeile vergleichen, um zu sehen, was Sie behoben haben? – Eser

+0

Ich habe einen Kommentar geschrieben, um zu beschreiben, was der Beispielcode tut. Ich hoffe, es wird helfen – MaKCbIMKo

0

Sie auf dem richtigen Weg ist, aber Sie müssen nur die Console.ReadLine innerhalb einer while-Schleife und break aus der Schleife setzen, wenn die Benutzerwert stimmt überein.

So etwas wie dieser Pseudo-Code:

Generate random number 
while (true) { 
    Get value from user 
    If it matches, break 
} 
1

sollten Sie int userValue = int.Parse(Console.ReadLine()); innerhalb der Schleife gesetzt und Eingang bei jeder Iteration überprüfen. break muss nur sein, wenn userValue == randValue:

public static void RandomNumberGenerator() 
    { 
     Random rand = new Random(); 

     int randValue = rand.Next(1, 11); 
     int attempts = 0; 


     while (true) 
     { 
      int userValue = int.Parse(Console.ReadLine()); // input inside the loop 
      if (userValue == randValue) // checking inside the loop 
      { 
       Console.WriteLine("You have guessed correctly!"); 
       break; 
      } 

      Console.WriteLine("You have guessed incorrectly"); 
      attempts++; 
      Console.WriteLine("You have made {0} incorrect guesses",   attempts);     
     } 

    } 
Verwandte Themen