黑马程序员技术交流社区

标题: 大家帮我看看我错在哪了 [打印本页]

作者: 小周学诚    时间: 2013-7-23 22:09
标题: 大家帮我看看我错在哪了


  Random ra=new Random(unchecked((int)DateTime.Now.Ticks));
  int[] arrNum=new int[10];
  int tmp=0;
  int minValue=1;
  int maxValue=10;
  for (int i=0;i<10;i++)
  {
    tmp=ra.Next(minValue,maxValue); //随机取数
    arrNum=getNum(arrNum,tmp,minValue,maxValue,ra); //取出值赋到数组中
  }

  public int getNum(int arrNum,int tmp,int minValue,int maxValue,Random ra)
  {
    int n=0;
    while (n<=arrNum.Length-1)
    {
      if (arrNum[n]==tmp) //利用循环判断是否有重复
      {
        tmp=ra.Next(minValue,maxValue); //重新随机获取。
        getNum(arrNum,tmp,minValue,maxValue,ra);//递归:如果取出来的数字和已取得的数字有重复就重新随机获取。
      }
    n++;
    }
    return tmp;
  }
作者: brucel50    时间: 2013-7-23 22:18
public int getNum(int arrNum,int tmp,int minValue,int maxValue,Random ra)
你这个方法第一个参数的类型是int,而你却传入一个数组。
 int[] arrNum=new int[10];
 arrNum=getNum(arrNum,tmp,minValue,maxValue,ra); //取出值赋到数组中



作者: 张强1    时间: 2013-7-23 22:28
int[] arrNum=new int[10];
整形数组,
 public int getNum(int arrNum,int tmp,int minValue,int maxValue,Random ra)
获取整数,
你看看是不是你的类型混淆了
作者: wodenhaowzg    时间: 2013-7-23 23:02
额 看不懂 帮你顶一下吧{:soso_e113:}
作者: 黑骏马    时间: 2013-7-24 00:01
看不太懂 ,还没学到C#里数组的表示,
猜测是这里出错了吧:
arrNum=getNum(arrNum,tmp,minValue,maxValue,ra); //取出值赋到数组中
是不是应该这样:
arrNum[i]=getNum(arrNum,tmp,minValue,maxValue,ra); //取出值赋到数组中//赋值给数组中第i+1个元素(C#数组下标是从0开始吗?)
getNum()里面是这里:
while (n<=arrNum.Length-1)
换成:
while (n<=arrNum[n].Length-1)
作者: 王云峰    时间: 2013-7-24 15:17
public int getNum(int arrNum,int tmp,int minValue,int maxValue,Random ra)
arrNum=getNum(arrNum,tmp,minValue,maxValue,ra);
int[] arrNum=new int[10];
方法的第一个参数是Int,而你传入的arrNum是一个整型数组。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2