当前位置:编程学习 > C#/ASP.NET >>

找了好久也找不到问题的问题

--------------------编程问答-------------------- 你这里有递归,这么简单的问题不应该用递归, --------------------编程问答-------------------- ckMdIndex完全不对,不能保证tmp不重复,

给你一个简单可靠的实现:

  private void main()
   {
   int[2]=getMdIndex(1,4);
   }

   private int[] getMdIndex(int minValue, int maxValue)
   {
   int xsrs=2;
   Random ran = new Random(unchecked((int)DateTime.Now.Ticks));
   int[] mdIndex = new int[xsrs];
   int tmp = 0;
   for (int i = 0; i < xsrs; i++)
   {
   tmp = ran.Next(minValue, maxValue);
   while(!ckMdIndex(mdIndex, tmp, minValue, maxValue))
{
   tmp = ran.Next(minValue, maxValue);
}
   mdIndex[i] = tmp;  
  if (i > 0 && mdIndex[0] == mdIndex[1])  
  {
   MessageBox.Show("位置1与位置2数值相同");
   }
   }
   return mdIndex;
   }

   private bool ckMdIndex(int[] mdIndex, int tmp, int minValue, int maxValue)  
  {
   int n = 0;
   while (n < mdIndex.Length)
   {
   if (mdIndex[n] == tmp)
   {
      return false;
  }
   n++;
   }
   return true;
   }

不过有可能陷入死循环,请慎用, --------------------编程问答-------------------- ckMdIndex函數寫的有問題 --------------------编程问答--------------------         public static void RandomNum(IList<int> ilist, Random rm)
        {
            while (true)
            {
                int n = rm.Next(1, 5);
                if (!ilist.Contains(n))
                {
                    ilist.Add(n);
                    break;
                }
            }
        } --------------------编程问答-------------------- 试下四楼的方法 --------------------编程问答-------------------- --------------------编程问答-------------------- 單步調試,你就知道問題在哪了.
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,