2010-10-15 122 views
1

當我嘗試運行應用程序時,出現以下錯誤我確定它的內容簡單但我沒有看到它。當我點擊我標記爲「播放」的按鈕時,我正在嘗試執行此操作。我想調用一個名爲randomnumber的方法。然後我希望結果顯示在lblPickFive_1中。 我有2x2,Pick5和強力球。每個隨機數將顯示在我創建的自己的標籤中。C中的隨機數字#

現在我只是想找到一個隨機生成一個隨機數並將其顯示在一個標籤中,然後我將轉向其餘的。如果我無法弄清楚其他問題,我肯定會發布更多問題。

錯誤1沒有重載方法 'RandomNumber' 取 '0' 參數

using System; 
using System.Windows.Forms; 

namespace LotteryTickets 
{ 
public partial class Form1 : Form 
{ 
    /// <summary> 
    /// no-args Constructor 
    /// </summary> 
    public Form1() 
    { 
     InitializeComponent(); 

    } 


    #region "== Control Event Handlers ==" 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     ClearWinningNumbers(); 
    } 


    #endregion "== End Control Event Handlers ==" 


    #region "== Methods =="; 
    /// <summary> 
    /// Clears the text inside the winning number "balls" 
    /// </summary> 
    private void ClearWinningNumbers() 
    { 
     this.lblPickFive_1.Text = ""; 
     this.lblPickFive_2.Text = ""; 
     this.lblPickFive_3.Text = ""; 
     this.lblPickFive_4.Text = ""; 
     this.lblPickFive_5.Text = ""; 

     this.lblTwoByTwo_1.Text = ""; 
     this.lblTwoByTwo_2.Text = ""; 

     this.lblPowerball_1.Text = ""; 
     this.lblPowerball_2.Text = ""; 
     this.lblPowerball_3.Text = ""; 
     this.lblPowerball_4.Text = ""; 
     this.lblPowerball_5.Text = ""; 

     this.lblPowerball_PB.Text = ""; 
    } 
    #endregion "== End Methods =="; 

    private void cblTwoByTwo_2_SelectedIndexChanged(object sender, EventArgs e) 
    { 

    } 

    private void cblTwoByTwo_1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

    } 

    private void btnPlay_Click(object sender, EventArgs e) 
    { 
     RandomNumber(); 

    } 

    private void lblPickFive_1_Click(object sender, EventArgs e) 
    { 

    } 
    private void RandomNumber(int min, int max) 
    { 
     int num = new Random().Next(min, max); 
     lblPickFive_1.Text = num.ToString(); 
    } 
    } 
} 
+3

您的代碼與您的錯誤不符;你還沒有列出名爲'SetRandomNumber'的任何方法。 – Randolpho 2010-10-15 18:34:50

+0

被調用的'SetRandomNumber'在哪裏? – Gabe 2010-10-15 18:35:59

+1

而且您應該只創建一個Random實例併爲其調用每個隨機數.Next。否則隨機獲得兩個隨機數就會產生問題,因爲Random隨時間播種。 – CodesInChaos 2010-10-15 18:37:21

回答

1

您需要的值傳遞:

private void btnPlay_Click(object sender, EventArgs e) 
{ 
    RandomNumber(); 

} 

應該是:

private void btnPlay_Click(object sender, EventArgs e) 
{ 
    RandomNumber(0, 50000); 

} 
0

RandomNumber方法有兩個參數。

如果您想調用該方法,則需要傳遞兩個參數。

6

首先,你不應該在每次你想要一個新的隨機數時新建一個隨機數發生器。您應該將生成器設置爲靜態或成員變量,併爲每個新數字引用它。

其次,您必須將最小值和最大值傳遞給您的方法RandomNumber

3

好了,你的代碼不匹配錯誤,但看看這個:

private void btnPlay_Click(object sender, EventArgs e) 
{ 
    RandomNumber(); 
} 

private void RandomNumber(int min, int max) 
{ 
    int num = new Random().Next(min, max); 
    lblPickFive_1.Text = num.ToString(); 
} 

RandomNumber有兩個參數,minmax。您在btnPlay_Click以內的電話中沒有指定任何電話。這正是編譯器所抱怨的。電話更改爲類似:

RandomNumber(5, 10); 

即使當這樣固定的,你不應該創建每次Random一個新的實例。碰巧,在這種特殊情況下不太可能導致問題,因爲它是由用戶操作觸發的,但您應該閱讀my article on random numbers以查看問題是什麼以及如何避免它。

0

您在btnPlay_Click中打電話給RandomNumber();,但RandomNumber方法需要minmax

0

設置一個Random對象並初始化一次。

class Form1 
{ 
    ... 
    Random rnd = new Random(); 
} 

然後使用它的每一個需要它

void RandomNumber(int min, int max) 
{ 
    int num = rnd.Next(min, max); 
    ... 
} 

時會發生什麼你打電話每次新的(),它重新種子的隨機數,你可以用相同的數字遍地結束。我有這種情況發生在我身上,它殺了我