c# - 有没有办法通过一个数组随机化而不重复,然后再次干净地循环?
问题描述
我正在尝试为具有字符串数组的应用程序制作一个随机发生器,我需要该数组通过每个字符串而不重复它......但是,每次我尝试时,它都会显示 StackOverflowException。
private string[] numbers = {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10"
};
private string[] previousNumbers = { "", "", "", "", "", "", "", "", "", "" };
private void Randomize(int min, int max)
{
Random rnd = new Random();
return rnd.Next(min, max);
}
private string ReturnText()
{
int num = Randomize(0, 9);
string number = numbers[num];
previousNumbers.SetValue(number, num);
if (number == previousNumbers[num])
{
string number_ = numbers[Randomize(0, 9)]
return number_;
} else if (number != previousNumbers[num])
return number;
}
在我尝试使用按钮的单击事件显示返回的文本后弹出异常...
解决方案
我试图在 LINQpad 中运行此代码,但是此代码中还有其他错误。我已经清理了下面的代码:
private string[] numbers = {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10"
};
private string[] previousNumbers = { "", "", "", "", "", "", "", "", "", "" };
private int Randomize(int min, int max)
{
Random rnd = new Random();
return rnd.Next(min, max);
}
private string ReturnText()
{
int num = Randomize(0, 9);
string number = numbers[num];
previousNumbers.SetValue(number, num);
if (number == previousNumbers[num])
{
string numberToReturn = numbers[Randomize(0, 9)];
return numberToReturn;
}
else if (number != previousNumbers[num])
{
return number;
}
else
{
return string.Empty;
}
}
代码中的错误类型似乎此代码尚未在 Visual Studio 中运行,其语法会导致构建失败:
- 当它返回一个 int 时,随机化返回 void。
- 并非所有代码路径都在 ReturnText 中返回。
- 缺少分号。
当我一遍又一遍地调用 ReturnText() 时,使用固定的代码,我没有得到 StackOverflowException。
推荐阅读
- python - 我的 CSV 写入代码已停止将 writer 识别为有效
- assembly - 尝试计算平均值时出错
- jquery - 此代码中的哪一行因“datepicker 不是函数”而出错?
- node.js - JSON中的循环结构是什么?
- ios - 为什么我的 Lottie 文件没有出现在我的项目中?
- javascript - 如何在 react 中构建一个带有钩子的多功能组件表单?
- java - 我怎样才能让骰子继续重新滚动和打印,直到它达到“7”或“点”
- c++ - 将逗号格式化为 long long 整数
- php - 如何在这 3 部分 PHP 注册表单中调用会话数组中的数组
- ios - 是否有适用于 Xcode 11、iOS 13 的 iPhone SE 模拟器?