2016-10-18 1 views
0

У меня есть мой код, но он довольно длинный, и я считаю, что его можно использовать в методах, я не знаю, как делать методы, и если кто-нибудь может помочь мне поместить его в метод, он будет высоко оценил, спасибоПоместите мой код в методы

private void btnGenerate_Click(object sender, EventArgs e) 
{ 
    Random rnd = new Random(); //this string is what is used to generate a random number 
    int lottery = 0; //an integer named lottery. It is set to 0 since the program doesn't so it can initialise as any random number 



    for (int i = 0; i <= 49; i++) 
    { 
     lottery = rnd.Next(1, 49); 
     lblLot1.Text = lottery.ToString(); 
    } 

    for (int i = 0; i <= 49; i++) 
    { 
     lottery = rnd.Next(1, 49); 
     lblLot2.Text = lottery.ToString(); 
    } 

    for (int i = 0; i <= 49; i++) 
    { 
     lottery = rnd.Next(1, 49); 
     lblLot3.Text = lottery.ToString(); 
    } 

    for (int i = 0; i <= 49; i++) 
    { 
     lottery = rnd.Next(1, 49); 
     lblLot4.Text = lottery.ToString(); 
    } 

    for (int i = 0; i <= 49; i++) 
    { 
     lottery = rnd.Next(1, 49); 
     lblLot5.Text = lottery.ToString(); 
    } 

    for (int i = 0; i <= 49; i++) 
    { 
     lottery = rnd.Next(1, 49); 
     lblLot6.Text = lottery.ToString(); 
    } 
} 
+1

Ваш код позволяет дубликаты, вы наклоненная дублируются номера в лотерее – FakeCaleb

+1

http://stackoverflow.com/questions/40044897/lottery-number-generator-c-sharp - Я думал, что ваше имя выглядело знакомым. – FakeCaleb

ответ

3

Нет необходимости в методе на этикетке. Только петля для петли будет делать:

foreach (Label lblLot in new Label[] {lblLot1, lblLot2, lblLot3, lblLot4, lblLot5, ...}) 
{ 
    for (int i = 0; i <= 49; i++) 
    { 
     int lottery = rnd.Next(1, 49); 
     lblLot.Text = lottery.ToString(); 
    } 
} 

Кроме того, цикл for кажется мне странным. Вы хотите установить значение метки один раз, вправо. Если вы хотите изменить его каждые X секунд, вам понадобится время или около того. Не он просто замораживает приложение до тех пор, пока он не пройдет через цикл for 50 раз, а затем отобразит последнее значение на экране.

Так что я думаю, что это нужно сделать:

foreach (Label lblLot in new Label[] {lblLot1, lblLot2, lblLot3, lblLot4, lblLot5, ...}) 
{ 
    int lottery = rnd.Next(1, 49); 
    lblLot.Text = lottery.ToString(); 
} 
+0

. Ах, ладно, спасибо за то, что это очень ценно :) –

1

Извините, но ваш код очень и очень странно. Почему вы устанавливаете значение каждый TextBox 49 раз? Только последнее значение будет видно!

Так вот то, что вы, вероятно, хотел сделать (6 из 49):

Random random = new Random(); 
int[] lottery = Enumerable.Range(1, 49).OrderBy(i => r.Next()).Take(6).ToArray(); 
lblLot1.Text = lottery[0].ToString(); 
lblLot2.Text = lottery[1].ToString(); 
lblLot3.Text = lottery[2].ToString(); 
lblLot4.Text = lottery[3].ToString(); 
lblLot5.Text = lottery[4].ToString(); 
lblLot6.Text = lottery[5].ToString(); 
  • Enumerable.Range() создает последовательность чисел от 6 до 49.
  • Эта последовательность перемешиваются с помощью OrderBy с помощью случайные числа
  • тогда массив создается из первых шести чисел в этой последовательности
  • , наконец, текстовые поля заполняются этими шестью значениями

Создавая одну перетасованную последовательность и принимая первые шесть, вы избегаете дубликатов. В вашем коде вы можете найти 1, 17, 17, 19, 29, 35, что не является допустимой последовательностью номеров лотереи.

Если вы хотите, чтобы номера были отсортированы, вы можете добавить OrderBy(i => i) между Take(6) и ToArray(). Таким образом, только выбранный шесть упорядочиваются снова:

int[] lottery = Enumerable.Range(1, 49).OrderBy(i => r.Next()).Take(6).OrderBy(i => i).ToArray(); 
+0

Моя программа - это генератор числа случайных лотерей, она генерирует числа от 1 до 49 –

+0

@glenGriffiths ваши петли 'for' не нужны. Текстовое поле будет отображать только значение из _last_ итерации. Поскольку ваш метод блокирует поток пользовательского интерфейса, предыдущие 48 значений не будут отображаться вообще. Попробуйте мой код, и вы увидите, что он делает то, что вы хотите. –

+0

Программа действительно работает, но спасибо в любом случае –

Смежные вопросы