2013-05-21 162 views
0

我正在使用Windows窗體應用程序。我有三個按鈕。我寫了一個計算每個按鈕的新位置的方法。但我有一些錯誤(在代碼後解釋)。方法是:運行時計算

Random random = new Random(); 
    public int SetPointLocation() 
    { 
     int x1 = x2 - 20; 
     int x2; 
     int x3 = x2 + 20; 


     int y1 = y2 - 1; 
     int y2 = random.Next(0, 2); 
     int y3 = y2 + 1; 

     return x2 = (((x3 - x1) * (y2 - y1))/y3 - y1) + x1; 
    } 

的錯誤,我得到:

不能使用局部變量「X2」聲明之前。

聲明之前不能使用局部變量'y2'。

,所以我重新排列方法的塊:

Random random = new Random(); 
    public int SetPointLocation() 
    { 
     int x2; 
     int x1 = x2 - 20; 
     int x3 = x2 + 20; 

     int y2 = Convert.ToInt32((picBox.Name).Remove(0, 10)); 
     int y1 = y2 - 1; 
     int y3 = y2 + 1; 

     return x2 = (((x3 - x1) * (y2 - y1))/y3 - y1) + x1; 
    } 

現在的錯誤,我得到:

「未分配的局部變量 'X2' 的使用」。

我使用的公式是從頻率表「統計」中找到中位數的方法。 但'x2'是未知的,我想在運行時計算它,但因爲'x2'沒有值,所以我不能設置'x1'和'x3'。這個問題的解決方案是什麼?

+2

問題來自行'int x1 = x2 - 20;',您使用的是x2,但沒有聲明它的值。更改'int x2;'爲'int x2 = 0;'它應該可以工作。你不能有'未知的'值。 –

+0

您是否使用[dynamic](http://msdn.microsoft.com/en-us/library/vstudio/dd264741.aspx)變量進行了研究? – Brian

+1

目前還不清楚你想要做什麼。在表達式中使用它之前,您需要爲它指定一個x2值。如果要在運行時設置該值,則需要從TextBox或命令行參數獲取輸入。 –

回答

3

這聽起來像你真的只是想通過x2作爲參數。然後你可以調用函數,當你知道x2是什麼。

Random random = new Random(); 
public int SetPointLocation(int x2) 
{ 
    int x1 = x2 - 20; 
    int x3 = x2 + 20; 

    int y2 = Convert.ToInt32((picBox.Name).Remove(0, 10)); 
    int y1 = y2 - 1; 
    int y3 = y2 + 1; 

    // Just return what x2 needs to be 
    return (((x3 - x1) * (y2 - y1))/y3 - y1) + x1; 
} 
5

只需使用

int x2 = 0; 

一切都需要才能使用它來進行初始化。這是該語言的一項要求。

不太密切相關,但無論如何打它:SO

3

x2在使用之前未設置。

Random random = new Random(); 
public int SetPointLocation() 
{ 
    int x2; // <- here' the problem 
    int x1 = x2 - 20; 
... 

得到的值,以x2:使用未初始化的變量

x2 = 123; 

未在C#允許。

編譯器應該告訴你錯誤發生的地方。