2015-11-30 70 views
0

對C#和編程通常都很新穎。我遇到了這個問題,我真的不知道如何解決它。首先,這裏是代碼:「變量」在當前上下文中不存在

它說在代碼的「if」部分中,random1在當前上下文中不存在。是的,我知道隨機只存在於Button_click部分內,因爲它位於括號之間。該代碼應該選擇0到20之間的隨機數字而不顯示它,以便用戶必須猜測它。如果用戶錯誤,它會顯示一個提示,說明數字太高或太低。我該如何解決這個問題?謝謝

編輯:這似乎是我太模糊,你的答案雖然是好的。這是全碼:

public void Button_Click(object sender, RoutedEventArgs e) //random 
{ 
    Random chiffrealeatoire = new Random(); 
    int random1 = (chiffrealeatoire.Next(0, 20)); 
} 

private void Button_Click_1(object sender, RoutedEventArgs e) //quit 
{ 
    Application.Current.Shutdown(); 
} 

private void Button_Click_2(object sender, RoutedEventArgs e) //veri 
{ 

} 

public void TextBox_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    if (BoiteChiffre.Text < random1) 
    { 
     MessageBox.Show("Too low"); 
    } 
    if (BoiteChiffre.Text > random1) 
    { 
     MessageBox.Show("Too high"); 
    } 
    else 
    { 
     MessageBox.Show("Congratulations");   
    } 
} 

假設用戶在文本框中

+2

你如果和else語句是一個方法定義之外。這段代碼不應該編譯。 –

+1

您需要重新定位右大括號,以便所有代碼都位於「Button_Click」方法內。 – Russ

回答

3

您已經關閉了您的方法並忽略了if語句! random1變量在您的方法中定義並聲明,因此它不在其外部。請移動方法的右括號以包含if語句。

此外,您的兩個if語句應該真的與else if鏈接在一起。你已經聲明瞭兩個獨立的if語句,所以只有其中一個會有其他的。沒有錯,只是更好地練習以下內容。

基本結構:

public void Button_Click(object sender, RoutedEventArgs e) { 

    ... 
    int random1 

    if(<random1) { 
     random1 
    } else if(>random1) { 
     ... 
    } else { 
     ... 
    } 

} // <- method closing bracket 

編輯:既然你已經大幅修改提供我不得不更新我的解釋代碼。

您的問題與變量作用域有關。在方法中定義的變量對該方法具有局部範圍。它不可訪問,甚至不在其外部。你應該在所有的方法之外聲明你的方法,這樣你可以有多種使用它的方法。

基本結構:

int random1 

public void methodA() { 
    random1 = whatever 
} 

public void methodB() { 
    if(random1) { 
     ... 
    } 
} 
+0

感謝您提供最新的答案。 –

0

寫請嘗試下面的代碼片段。你需要在同一個方法中聲明變量。

public void Button_Click(object sender, RoutedEventArgs e) //random 
{ 
    Random chiffrealeatoire = new Random(); 
    int random1 = (chiffrealeatoire.Next(0, 20)); 

    if (BoiteChiffre.Text < random1) 
    { 
     MessageBox.Show("Too low"); 
    } 
    if (BoiteChiffre.Text > random1) 
    { 
     MessageBox.Show("Too high"); 
    } 
    else 
    { 
     MessageBox.Show("Congratulations");   
    } 
} 
相關問題