//这是一个FCFS磁盘寻道算法的部分
private void btstart_Click(object sender, EventArgs e)
        {
            n = int.Parse(textBox1.Text.Trim());//生成n个随机数,磁道总数
                for (int i = 0; i < n; i++)//*******2
                {
                    num[i] = (int)(rnd.Next(0, 100));
                }
                for (int i = 0; i < n; i++)
                {
                    richTextBox1.AppendText(num[i] + ",");//显示到第一个rtb里
                }
            
        }
private void btGO_Click(object sender, EventArgs e)
        {
            if (radioButton1.Checked)
            { 
                int sum=0,i,j,first=0,now;
                   float averag;
                   
                   now =int.Parse(textBox2.Text.Trim());//当前磁道
                   for (int k = 0; k < n;k++ )// *****************1
                   {
                       richTextBox2.AppendText(num[k] + ",");//显示到第二个rtb里
                   }                 
                     ...            
               }
        }
============================================
n和数组num都是全局的 random也是在外new的 问题是:显示到第二个rtb里的数字不是第一次随机生成存在数组中的,而且执行到1那个for循环时,程序又跳到2那个for循环去执行random了,为什么呢?

解决方案 »

  1.   

    你帖的代码不全,不太清楚你的问题到底出现在哪,最好把声明的代码也贴出来,给个完整的才好看问题
    要不然不清楚你说的第二个问题到底是神马回事
    实验了一下,把代码贴出来,你说的第一个问题貌似不存在,第二个rtb里的数字也是第一次随机生成保存在数组里的。        int n;
            int[] num;
            Random rnd = new Random();        public Form1()
            {
                InitializeComponent();
            }        private void btstart_Click(object sender, EventArgs e)
            {
                n = int.Parse(textBox1.Text.Trim());//生成n个随机数,磁道总数
                num = new int[n];
                for (int i = 0; i < n; i++)//*******2
                {
                    num[i] = (int)(rnd.Next(0, 100));
                }
                for (int i = 0; i < n; i++)
                {
                    richTextBox1.AppendText(num[i] + ",");//显示到第一个rtb里
                }
            }        private void btGo_Click(object sender, EventArgs e)
            {
                if (radioButton1.Checked)
                {
                    int now = int.Parse(textBox2.Text.Trim());//当前磁道
                    for (int k = 0; k < n; k++)// *****************1
                    {
                        richTextBox2.AppendText(num[k] + ",");//显示到第二个rtb里
                    }
                }
            }
      

  2.   

    你都没有理解程序执行的先后顺序,先执行完了才后执行后面的,你完全可以只使用一个循环 for (int i = 0; i < n; i++)//*******2
      {
      num[i] = (int)(rnd.Next(0, 100));  richTextBox1.AppendText(num[i] + ",");//显示到第一个rtb里
      }
      

  3.   

    恩 怨我了 这个程序是有好几个算法可以选择的 循环还是得照用 其他的部分我没贴 致使大家误解了 抱歉 第一次发帖 
    问题还是自己解决了
    属于低级错误 操作控件的时候 多了句这个
    // this.richTextBox2.TextChanged += new System.EventHandler(this.btstart_Click);
    导致的跳转
    谢谢各位的热心帮助~