IRC Bot - 轮盘命令

时间:2014-09-30 00:58:16

标签: c# arrays indexoutofboundsexception

我正在尝试为我的机器人制作轮盘赌命令,这是我到目前为止所做的。

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。错误,对于那些不那么复杂的事情来说,这很奇怪。

我如何解决这个问题,我会忽略数组并转到字典或列表<>?

1 个答案:

答案 0 :(得分:1)

您使用索引_c引用rnum数组元素:_c[rnum]
rnum变量可以包含0 - 35范围内的任何整数值 但_c数组只有10个元素。

要解决此问题,请将rnum变量限制在范围0 - 9

int rnum = _r.Next(0, 10);