2016-02-29 56 views
-2
namespace WindowsFormsApplication5 
{ 
    public partial class Form1 : Form 
    { 
     int[] codes = { 39835, 72835, 49162, 29585, 12653, 87350, 74783}; 

    public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     {} 

     private void label4_Click(object sender, EventArgs e) 
     {} 

     private void btnRandom_Click(object sender, EventArgs e) 
     { 
      Random mRandom = new Random(); 
      int randcode = mRandom.Next(0, codes.Length - 1); 
     } 
    } 
} 

我希望通過單擊「btnRandom」拉從陣列中的隨機碼,並把它比作一個字符串,但「INT randcode」總是出來作爲一個錯誤,當我嘗試一下。需要幫助的C#從陣列中拔出一個int

private void button1_Click(object sender, EventArgs e) 

    { 
     if (txtCode.Text == randcode) ; 
     { 
      MessageBox.Show("working"); 
     } 
    } 

試圖讓它像這樣工作。

+1

button1_Click無法訪問randcode,因爲該變量作爲btnRandom_Click方法的本地範圍。 – hatchet

+0

當您收到錯誤時,發佈實際的錯誤文本會很有幫助。 – Blorgbeard

回答

2

你有幾個問題:

  • codes數組包含整數。您的文本框包含一個字符串。
  • 當您進行比較時,您實際上並未訪問數組 - 您正在比較整數索引與字符串。
  • 你的if聲明不應該在那裏後面有一個分號。
  • randcode不是在類級別定義的,所以你不能從比它在聲明的一個不同的功能訪問

總之,你想是這樣的:

int randcode; 

private void btnRandom_Click(object sender, EventArgs e) 
{ 
    Random mRandom = new Random(); 
    randcode = mRandom.Next(0, codes.Length - 1); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    if (txtCode.Text == codes[randcode].ToString()) 
    { 
     MessageBox.Show("working"); 
    } 
} 
+0

非常感謝你的男人! :) – James

0

那是因爲txtCode.Text是一個字符串,而randcode是一個整數。你不能比較這兩個。它們都必須是字符串或整數。試試這個

if(txtCode.Text == randcode.ToString()) 

我也注意到int randcode不在這個方法的範圍內。您MEED通過在類的範圍內宣佈它mkae randcode一個成員變量

1

你或者解析txtCode.Text爲整數或轉換randCodestring

if (int.Parse(txtCode.Text) == randcode) ... 

if (txtCode.Text == randcode.ToString()) .... 

但也有有些東西你可以/必須修復:

  1. Random.Next(min, max)方法,max是排他性的,因此呼叫必須是這樣的:

    int randcode = mRandom.Next(0, codes.Length); 
    
  2. 你在裏面btnRandom_Click()聲明ranCode,且必須在Form1類:

    public partial class Form1 : Form 
    { 
        int randCode; 
        int[] codes = { 39835, 72835, 49162, 29585, 12653, 87350, 74783}; 
    
    .... 
    
    randcode = mRandom.Next(0, codes.Length); 
    
  3. 而且你;之後if聲明,因此無論結果MessageBox.Show("working");將被執行。

最後的代碼應該是這樣的:

public partial class Form1 : Form 
{ 
    int randCode; 
    int[] codes = { 39835, 72835, 49162, 29585, 12653, 87350, 74783}; 
    ... 

    private void btnRandom_Click(object sender, EventArgs e) 
    { 
     Random mRandom = new Random(); 
     randcode = mRandom.Next(0, codes.Length); 
    } 
    ... 

    private void button1_Click(object sender, EventArgs e) 
    { 
     if (int.Parse(txtCode.Text) == randcode) 
     { 
      MessageBox.Show("working"); 
     } 
    } 
    ... 
}