请问这个程序如何调试 输出1-30的不重复随机数中的5个数。
namespaceConsoleApplication4{classProgram{staticvoidMain(string[]args){intNum=5;//数目p...
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{ int Num = 5; //数目
private const int MaxValue = 30; //最大数
private const int MinValue = 1; //最小数
public int[] sort(int[] num)
{ int i,j ,temp;
int n = num.Length;
for (i = 0; i < n - 1; i++)
{ for (j = i + 1; j < n; j++)
{ if (num[i] > num[j])
{ temp = num[i];
num[i] = num[j]; // 数据交换
num[j] = temp;
}
} }
return num;
}
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; }}
public string getRandomNum(int num, int minValue, int maxValue)
{ Random ra = new Random(unchecked((int)DateTime.Now.Ticks));
string strNum = "";
int[] arrNum = new int[num];
int tmp = 0;
for (int i = 0; i <= num - 1; i++)
{ tmp = ra.Next(minValue, maxValue); //随机取数
arrNum[i] = getNum(arrNum, tmp, minValue, maxValue, ra); //取出值赋到数组中
}
this.sort(arrNum);
for (int i = 0; i <arrNum.Length; i++)
{ string s = Convert.ToString(arrNum[i]);
strNum = strNum + s + " "; }
return strNum; }
帮我分析下哪里出错了 怎么改? getNum 有问题吗 展开
{
class Program
{
static void Main(string[] args)
{ int Num = 5; //数目
private const int MaxValue = 30; //最大数
private const int MinValue = 1; //最小数
public int[] sort(int[] num)
{ int i,j ,temp;
int n = num.Length;
for (i = 0; i < n - 1; i++)
{ for (j = i + 1; j < n; j++)
{ if (num[i] > num[j])
{ temp = num[i];
num[i] = num[j]; // 数据交换
num[j] = temp;
}
} }
return num;
}
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; }}
public string getRandomNum(int num, int minValue, int maxValue)
{ Random ra = new Random(unchecked((int)DateTime.Now.Ticks));
string strNum = "";
int[] arrNum = new int[num];
int tmp = 0;
for (int i = 0; i <= num - 1; i++)
{ tmp = ra.Next(minValue, maxValue); //随机取数
arrNum[i] = getNum(arrNum, tmp, minValue, maxValue, ra); //取出值赋到数组中
}
this.sort(arrNum);
for (int i = 0; i <arrNum.Length; i++)
{ string s = Convert.ToString(arrNum[i]);
strNum = strNum + s + " "; }
return strNum; }
帮我分析下哪里出错了 怎么改? getNum 有问题吗 展开
2个回答
展开全部
tmp = ra.Next(minValue, maxValue);
getNum(arrNum, tmp, minValue, maxValue, ra);
这句 你改成 return getNum(arrNum, tmp, minValue, maxValue, ra); 看下。。
其实应该有更好的思路 这个不用递归 其实会更好
群号:27499316
getNum(arrNum, tmp, minValue, maxValue, ra);
这句 你改成 return getNum(arrNum, tmp, minValue, maxValue, ra); 看下。。
其实应该有更好的思路 这个不用递归 其实会更好
群号:27499316
更多追问追答
追问
还是报错,您有更好的方式吗 ?
追答
直接报错?那你看下 有没有语法错误
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询