我利用timer1每隔1秒生成一个随机数int T = rand.Next(1, 3),并保存到数组arr里边,共生成6个数(用timer2来控制:timer2的Internal=6000),并在textBox1中显示出来结果。然后比较生成的这6个随机数:第一个和第三个比,第二个和第四个比,第三个和第五个比,第四个和第六个比;如果相同,则生成数字1并保存到数组C里边,如果不同,则生成数字2并保存到数组C里边。这样数组C就有四个元素。并在textBox2中显示出来结果。问题出来了:不管arr的输出结果如何,数组C的结果总是2 2 2 2。举个例子,假如arr的结果是1 2 2 1 2 1,那么数组C应该是2 2 11,但textBox2显示出来的结果却是2 2 2 2。请教各位大侠!帮忙找出问题所在!code:namespace yu_men
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        ArrayList arr = new ArrayList();                                       
        ArrayList C = new ArrayList();        private void timer1_Tick(object sender, EventArgs e)
        {
            timer2.Tick += new EventHandler(timer2_Tick);
            timer2.Interval = 6 * 1000;
            timer2.Enabled = true;            Random rand = new Random();
            int T = rand.Next(1, 3);
            textBox0.Text = Convert.ToString(T);
            arr.Add(T);
        }        private void timer2_Tick(object sender, EventArgs e)
        {
            timer1.Dispose();
            timer2.Dispose();
            textBox0.Clear();
        }        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Interval = 1000;
            timer1.Enabled = true;
        }
       
        private void button2_Click(object sender, EventArgs e)
        {
            foreach (int x in arr)
            {
                textBox1.Text = textBox1.Text + x + "\r\n";
            }            for (int i = 0; i <= 3; i++)
            {
                if (arr[i + 2] == arr[i])
                {
                    C.Add(1);
                }                if (arr[i + 2] != arr[i])
                {
                    C.Add(2);
                }
            }            foreach (int y in C)
            {
                textBox2.Text = textBox2.Text + y + "\r\n";
            }
        }        private void Form1_Load(object sender, EventArgs e)
        {        }
    }
}

解决方案 »

  1.   

    Random rand = new Random();
    声明成全局变量就OK了。
      

  2.   


    试了,还是一样啊。数组arr没问题,是数组C出问题。
      

  3.   

                for (int i = 0; i <= 3; i++) 
                { 
                    if (arr[i + 2] == arr[i]) 
                    { 
                        C.Add(1); 
                    }                 if (arr[i + 2] != arr[i]) 
                    { 
                        C.Add(2); 
                    } 
                } 
    改成:
                for (int i = 0; i <= 3; i++) 
                { 
                    if ((int)arr[i + 2] == (int)arr[i]) 
                    { 
                        C.Add(1); 
                    }                 if ((int)arr[i + 2] != (int)arr[i]) 
                    { 
                        C.Add(2); 
                    } 
                } 
      

  4.   

    arr[index]是object类型,对比值的话,应转成整型来对比。
      

  5.   


    min_jie,我还有个问题,如果在不关闭form的情况下,我想重复运行程序,比如生成一个repeat按钮,这样的话数组arr和C就会一直增加,比如第一次运行程序后,数组arr有6个元素,第二次运行后,数组arr就会有12个元素,我想要的是,不论重复多少次,数组arr始终都是6个,也就是说,程序运行第二次的时候,会自动把第一次运行得到的数组arr清空,请问这个怎么实现呢?多谢了阿!
      

  6.   


    不好意思,没留意你第二个问题,按钮事件下:
    arr.Clear();
      

  7.   

    我觉得把ArrayList arr = new ArrayList();                                      
           ArrayList C = new ArrayList(); 
    改成ArrayList int arr = new ArrayList();                                      
            ArrayList int C = new ArrayList(); 
    就可以把?