我正在尝试为我的机器人制作轮盘赌命令,这是我到目前为止所做的。
if (!String.IsNullOrEmpty(e.Data.Message.Replace("!roulette", ""))) {
string _u = e.Data.Nick;
string _b = e.Data.Message.Replace("!roulette", "");
string[] _c = { "R", "B", "G", "Red", "Black", "Green",
"r", "b", "g", "redblack green" };
Random _r = new Random();
int rnum = _r.Next(0, 36); // 0-35
if (_b.Contains(rnum.ToString()) && _b.Contains(_c.ToString())) {
MessageHandler(conf.Nick, e.Data.Nick + " spins the wheel.. " + _b.ToString() + " " + (string)_c[rnum] + "! We have a winner!", 8);
} else {
MessageHandler(conf.Nick, e.Data.Nick + " spins the wheel.. " + rnum.ToString() + " " + (string)_c[rnum] + "! You lose!", 8);
}
}
我得到Index outside the bounds of the array
。错误,对于那些不那么复杂的事情来说,这很奇怪。
我如何解决这个问题,我会忽略数组并转到字典或列表<>?
答案 0 :(得分:1)
您使用索引_c
引用rnum
数组元素:_c[rnum]
。
rnum
变量可以包含0 - 35
范围内的任何整数值
但_c
数组只有10
个元素。
要解决此问题,请将rnum
变量限制在范围0 - 9
:
int rnum = _r.Next(0, 10);