2014-10-08 17 views
0

我想生成6個隨機數字,並將其存儲在一個列表中,然後在另一個列表 顯示這些列表項到目前爲止,我已經轉會名單數據,另一份清單沒有得到(集合)C#

 Random random_generator = new Random(DateTime.Now.Millisecond); 

     int random_numbers; 

     List<int> lst_numbers = new List<int>(); 

     lst_display.Items.Clear(); 

     while (lst_numbers.Count < 6) 
     { 
      random_numbers = random_generator.Next(1,45); 
      if (!lst_numbers.Contains(random_numbers)) 
      { 
       lst_numbers.Add(random_numbers); 
      } 
      else 
      { 

      } 
      lst_display.Items.Add(lst_numbers); 

雖然它與(集合)完成的,而不是存儲

這裏的實際數字是最後的工作代碼

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void btn_start_Click(object sender, EventArgs e) 
    { 
     Random random_generator = new Random(DateTime.Now.Millisecond); 

     int random_numbers; 

     List<int> lst_numbers = new List<int>(); 

     lst_display.Items.Clear(); 

     while (lst_numbers.Count < 6) 
     { 
      random_numbers = random_generator.Next(1, 45); 
      if (!lst_numbers.Contains(random_numbers)) 
      { 
       lst_numbers.Add(random_numbers); 
      } 
      else 
      { 

      } 
     } 
     lst_display.Items.Add(string.Join(",", lst_numbers)); 
    } 
} 

}

+0

你們爲什麼不直接添加數第二個列表? – 2014-10-08 03:29:42

+0

我必須列出6個項目,然後將它們顯示在新列表的一行中 – Rozap 2014-10-08 03:38:44

+0

將它們顯示在一行上?像ListBox中的一行上的'3,7,17​​,42,16,23'? – 2014-10-08 03:40:36

回答

0

這行你while循環內(你缺少一個右大括號)是罪魁禍首:

lst_display.Items.Add(lst_numbers); 

您要添加的整個集合lst_display.Items,和你這樣做每次迭代一次。

要麼保留該行的循環中的代碼,而只是添加當前隨機生成的數字:

lst_display.Items.Add(random_numbers); 

或將其循環外,並添加收集一次,while循環完成後。該Items屬性是一個ObjectCollection,所以你需要轉換爲一個對象數組,如果你走這條路線:

while (...) 
{ 
    ... 
} 
lst_display.Items.AddRange(lst_numbers.Cast<object>().ToArray()); 

除非你以後使用List<int>,你可以只刪除代碼,並添加使用我的第一個示例,將隨機生成的數字直接輸入到lst_display.Items


更新,看到您的評論後:

「我不得不採取的6項列表,然後在新名單上的一行中顯示它們」

如果您想要將它們全部顯示在ListBox的一行中,有一個名爲String.Join的方法,它需要一個集合並將其展平。

所以while循環完成後,你可以稱之爲:

lst_display.Items.Add(string.Join(",", lst_numbers)); 
+0

完美的工作。謝謝! – Rozap 2014-10-08 03:49:37

+0

如果我然後想要說每行6個隨機數的5行我將如何去呢? – Rozap 2014-10-08 05:30:11

0

下面的代碼是否可以解決您的問題?請告訴我。謝謝。

  Random random_generator = new Random(DateTime.Now.Millisecond); 

      int random_numbers; 

      List<int> lst_numbers = new List<int>(); 
      List<int> lst_display = new List<int>(); 

      while (lst_numbers.Count < 6) 
      { 
       random_numbers = random_generator.Next(1, 45); 
       if (!lst_numbers.Contains(random_numbers)) 
       { 
        lst_numbers.Add(random_numbers); 
       } 
      }; 

      lst_display.AddRange(lst_numbers); 
+0

似乎接受的代碼很好,但我沒有得到我的形式輸出 – Rozap 2014-10-08 03:39:15