2016-07-24 7 views
0

Ich schreibe ein vielflächiges Werkzeugwalzprogramm. Der Benutzer kann die Art des zu würfelnden Würfels und die Anzahl der Würfel eingeben. Es funktioniert gut, außer dass ich nicht sicher bin, wie ich die Summe addiere und dann ausdrucken soll.
Es wird jedoch erfolgreich jede einzelne Rolle gedruckt, also weiß ich, dass es so weit geht, die Zufallszahlen im richtigen Bereich zu erzeugen, der vom Benutzer bestimmt wird. Ich wollte die Summe am Ende des Programms drucken, aber es funktioniert nicht.
Verschwindet der Wert der Variablen, nachdem das Programm den Schalter verlassen hat?Wie kann ich eine laufende Summe erstellen, die ihren Wert außerhalb des Switch-Falls behält?

static void Main(string[] args) 
{ 
    int typeOfDice = Convert.ToInt32(Console.ReadLine()); 
    Random rnd = new Random(); 
    int numberOfDice = Convert.ToInt32(Console.ReadLine()); 
    // Assigns random generator parameters to user's choice of dice type 
    switch (typeOfDice) 
    { 

     case 4: 
      for(int count = 0; count < numberOfDice; count++) 
      { 
       int currentRoll = rnd.Next(typeOfDice); 
       int total = currentRoll + 1; 
       Console.WriteLine(currentRoll + 1); 
       Console.WriteLine(" "); 
      } 
      break; 
      //.... 
     case 100: 
      for (int count = 0; count < numberOfDice; count++) 
      { 
       int currentRoll = rnd.Next(typeOfDice); 
       int total = currentRoll + 1; 
       Console.WriteLine(currentRoll + 1); 
      } 
      break; 
     } 
    } 
} 

Antwort

0

Es gibt zwei Probleme mit Ihrem Code.

  1. Sie definieren die Variable total innerhalb der for-Schleife. Wenn Sie möchten, dass es nach dem Wechsel zugänglich ist, definieren Sie es vor dem Wechsel.
  2. Wenn Summe die Summe aller Würfelwürfe ist, sollten Sie sie mit jedem Würfelwurf erhöhen, nicht setzen. d. h. total += currentRoll + 1 anstelle von total = currentRoll + 1
+0

Danke. Weißt du, wie ich beurteilen kann, ob der Benutzer einen anderen Wert als 4, 6, 8, 10, 12, 20 oder 100 eingibt? Ich dachte vielleicht an den oder Operator ||, aber kann ich damit mehrere Werte auswerten? Ich weiß, dass es für 2 verwendet werden kann, wie in if (numberOfDice! = 4 || numberOfDice! = 6), aber ich bin nicht sicher, wie man es mit mehr als 2 Werten macht. Oder muss ich mehrere separate if-Anweisungen verwenden? Gibt es einen besseren Weg? Arrays, vielleicht? Ich habe mich noch nie mit Arrays herumgeschlagen. – JohnnyRelentless

+0

Es sieht so aus, als würdest du jeden Würfeltyp einzeln im Switch handhaben, also kannst du einen Standardfall (mit Default :) hinzufügen und dort ungültige Würfeltypen behandeln. Sie können auch in HashSet und Mitgliedschaft testen. Für eine zukünftige Referenz sollte eine Folgefrage wie diese in einer neuen Frage und nicht in einem Kommentar stehen. Vielen Dank. – bpachev

1

Definieren Sie die Variable total vor der switch-Anweisung, und es wird funktionieren. Da Sie es innerhalb der for-Schleife deklarieren, geht es außerhalb des Geltungsbereichs, wenn die for-Schleife beendet ist.