2013-09-27 3 views
1

Я относительно новичок в программировании на C#. Код, который я пытаюсь реализовать, должен предоставить значение Array для моей переменной SEAT.Использование неназначенной локальной переменной - мне нужно назначить

private void btnFindSeat_Click(object sender, EventArgs e) 
{ 
    int AntalSaeder = int.Parse(txtbxSeats.Text); 
    int AntalPassagerer = int.Parse(txtbxPassengers.Text); 


    int[] SEATARRAY; 
    SEATARRAY = new int[AntalSaeder]; 

    int RandomTal = Randomizer.Next(1, AntalSaeder); 
    int s = 0; 
    int SEAT; 

    listBox1.Items.Clear(); 

    for (int i = 1; i < AntalSaeder; i++) 
    { 
     for (int j = 1; j < AntalPassagerer; j++) 
     { 
      if (AntalPassagerer > AntalSaeder) 
      { 
       MessageBox.Show("Flyet er overbooket"); 
      } 

      else if (AntalPassagerer <= AntalSaeder) 
      { 
       SEAT = i + j; 
      } 
      else 
      { 
       while (AntalPassagerer <= AntalSaeder) 
       { 
        if (!SEATARRAY.Contains(RandomTal)) 
        { 
         SEATARRAY[i] = RandomTal; 
         i++; 

         listBox2.Items.Add(SEATARRAY[RandomTal]); 

        } 

        SEATARRAY[s] = SEAT; 
        s++; 
        listBox1.Items.Add(SEATARRAY[RandomTal]); 

       } 
      } 
     } 
    } 
} 

По какой-то причине переменная СИДЕНЬЯ в:

SEATARRAY[s] = SEAT; 
s++; 
listBox1.Items.Add(SEATARRAY[RandomTal]); 

показывает ошибку: Использование неназначенную локальной переменной. Из моего pov он должен быть назначен в цикле как SEAT = i + j;.

Я мог бы использовать некоторую помощь, если кто-нибудь знает, что случилось.

+0

Кстати, вы заметили, что никогда не достигнете 'else'-части условия? –

+0

Почему вы начинаете с 'i = 1'? это должно быть 'i = 0', нет? то же самое с 'j' –

ответ

1

Просто подумайте о том, что есть вероятность, что изначально (AntalPassagerer <= AntalSaeder) - false. В этом случае SEAT не инициализируется, поскольку компилятор не догадывается о значениях AntalPassagerer и AntalSaeder и зависимых выражениях. По той причине, что компилятор не догадывается о вашем потоке алгоритма, переменная, возможно, не указана в представлении компилятора.

Вы должны утверждать своей бизнес-логикой, что SEAT инициализируется каким-либо образом. Если вы просто хотите, чтобы он запускал для отладки набор SEAT изначально при его объявлении на любое значение, например 0 или 1 или что-то еще: int SEAT = 0;

+0

Большое спасибо, я попробую это. Если вы заметили какие-либо очевидные ошибки, пожалуйста, не стесняйтесь указывать их - как уже упоминалось, я новичок в этом и могу использовать некоторые знания! – mk100

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