2013-09-27 21 views
1

我對C#編程相對來說比較陌生。我試圖實現的代碼應該爲我的變量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]); 

       } 
      } 
     } 
    } 
} 

出於某種原因,在變量SEAT:

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

顯示錯誤:未分配的局部變量的使用。從我的pov它應該在循環內分配爲SEAT = i + j;

我可以使用一些幫助,如果有人知道發生了什麼。

+0

順便說一句,你有沒有注意到,你永遠不會到達'else'部分的條件? –

+0

你爲什麼從'i = 1'開始?它應該是'我= 0',不是嗎?與'j'相同 –

回答

1

想想看有沒有條件(AntalPassagerer <= AntalSaeder)最初是false的情況。在這種情況下,SEAT未初始化,因爲編譯器不會猜測AntalPassagererAntalSaeder以及相關表達式的值。出於這個原因,編譯器不會猜測你的算法流,變量可能從編譯器的視圖中未聲明。

您應該通過業務邏輯斷言SEAT以任何方式初始化。如果你只是希望得到它運行調試集SEAT最初在其聲明任何值,如0或1或任何:int SEAT = 0;

+0

非常感謝,我會嘗試一下。如果您發現任何明顯的錯誤,請不要猶豫,指出 - 如前所述,我是新手,可以使用一些知識輸入! – mk100

相關問題