none
Doppelte Zahlen in Arraylist filtern (Lottozahlengenerator) RRS feed

  • 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?

    Dienstag, 1. November 2011 09:33

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

    Dienstag, 1. November 2011 11:09
  • 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;
    }
    


    Mittwoch, 2. November 2011 10:27

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

    Dienstag, 1. November 2011 11:09
  • 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;
    }
    


    Mittwoch, 2. November 2011 10:27
  • Hallo phatt1986,

    Haben Dir die Antworten geholfen?

    Grüße,
    Robert

    Donnerstag, 3. November 2011 11:36
    Moderator
  • ja vielen dank die antworten haben mich sehr weitergebracht...
    Freitag, 4. November 2011 14:18