需要帮助从c#中的数组中提取int

时间:2016-02-29 21:12:11

标签: c# arrays

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”总是出现错误。

  private void button1_Click(object sender, EventArgs e)

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

试着让它像这样工作。

3 个答案:

答案 0 :(得分: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");  
   }
}

答案 1 :(得分:1)

您要么将txtCode.Text解析为整数,要么将randCode转换为string

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");

  4. 最后代码应该是这样的:

    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");  
            }
        }
        ...
    }
    

答案 2 :(得分:0)

那是因为txtCode.Text是一个字符串而randcode是一个整数。你不能比较这两个。它们必须是字符串或整数。试试这个

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

我还注意到int randcode不在此方法的范围内。你通过在类范围声明它来调用randcode一个成员变量