Benutzer mit den meisten Antworten
Doppelte Zahlen in Arraylist filtern (Lottozahlengenerator)

Frage
-
ArrayList zahlen = new ArrayList(); Random rnd = new Random(); int zahl1 = rnd.Next(1, 49); zahlen.Add(zahl1); int zahl2 = rnd.Next(1, 49); zahlen.Add(zahl2); int zahl3 = rnd.Next(1, 49); zahlen.Add(zahl3); int zahl4 = rnd.Next(1, 49); zahlen.Add(zahl4); int zahl5 = rnd.Next(1, 49); zahlen.Add(zahl5); int zahl6 = rnd.Next(1, 49); zahlen.Add(zahl6); int zahl7 = rnd.Next(1, 49); zahlen.Add(zahl7); zahlen.Sort(); textBox1.Text = zahlen[0].ToString(); textBox2.Text = zahlen[1].ToString(); textBox3.Text = zahlen[2].ToString(); textBox4.Text = zahlen[3].ToString(); textBox5.Text = zahlen[4].ToString(); textBox6.Text = zahlen[5].ToString(); textBox7.Text = zahlen[6].ToString();
So sieht mein Lottozahlengenerator momentan aus - allerdings werden doppelte Zahlen noch nicht vermieden...Wie löse ich es am besten, dass keine Zahl doppelt angezeigt wird?
Antworten
-
Du kannst die Contains-Methode der ArrayList-Klasse verwenden um zu prüfen, ob eine Zahl schon in der Liste enthalten ist. Dann lässt du die Generierung der Zahlen noch in einer Schleife laufen ...
List<int> myList = new List<int>();
Random rnd = new Random(); do { int zahl = rnd.Next(1, 49); if (!myList.Contains(zahl)) myList.Add(zahl);
} while (myList.Count < 6);Ich habe hier nur statt einer ArrayList die generische List<> Klasse verwendet, dann ist die Sache typsicher.
Viele Grüße
Jens Brand
- Bearbeitet Jens Brand Dienstag, 1. November 2011 11:10
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 3. November 2011 11:35
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 4. November 2011 14:28
-
hier mal ein Quelltext
public partial class Form1 : Form { List<int> myList = new List<int>(); Random rnd = new Random(); [...] private void Lottozahlen() { for (int i=0; i < 6; i++) { int zahl = rnd.Next(1, 49); if (!myList.Contains(zahl)) { myList.Add(zahl); } else { i--; } } // Vereinfachung der Ausgabe foreach (int zahl in myList) { string c = zahl.ToString(); textBox1.Text += " " + c; }
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 3. November 2011 11:35
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 4. November 2011 14:28
Alle Antworten
-
Du kannst die Contains-Methode der ArrayList-Klasse verwenden um zu prüfen, ob eine Zahl schon in der Liste enthalten ist. Dann lässt du die Generierung der Zahlen noch in einer Schleife laufen ...
List<int> myList = new List<int>();
Random rnd = new Random(); do { int zahl = rnd.Next(1, 49); if (!myList.Contains(zahl)) myList.Add(zahl);
} while (myList.Count < 6);Ich habe hier nur statt einer ArrayList die generische List<> Klasse verwendet, dann ist die Sache typsicher.
Viele Grüße
Jens Brand
- Bearbeitet Jens Brand Dienstag, 1. November 2011 11:10
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 3. November 2011 11:35
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 4. November 2011 14:28
-
hier mal ein Quelltext
public partial class Form1 : Form { List<int> myList = new List<int>(); Random rnd = new Random(); [...] private void Lottozahlen() { for (int i=0; i < 6; i++) { int zahl = rnd.Next(1, 49); if (!myList.Contains(zahl)) { myList.Add(zahl); } else { i--; } } // Vereinfachung der Ausgabe foreach (int zahl in myList) { string c = zahl.ToString(); textBox1.Text += " " + c; }
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 3. November 2011 11:35
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 4. November 2011 14:28