【问题标题】:Index out of bounds for random.NextBytesrandom.NextBytes 的索引超出范围
【发布时间】:2017-04-10 20:16:01
【问题描述】:

我正在使用 InitializeLetters 函数来准备开始打字游戏的字母。它应该准备 5 个随机字母到 byte[] 类型的数组中,然后将值传递到 char[] 类型的数组中。 虽然这种实现有效,但它通常会给出数组越界错误。这是函数本身和使用它的地方。关于这个错误的任何想法或我该如何解决它?增加 buff[5] 的大小并不能解决问题。

private static void InitializeLetters(char[] chars)
        {
            byte[] buff = new byte[5];
            Random rand = new Random();
            rand.NextBytes(buff);
            string charspallete = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            for (int i = 0; i < 5; i++)
            {
                chars[i] = charspallete[buff[i] % 26 + 1];
            }
        }

并且在按钮开始时调用该函数。

private void labelStart_Click(object sender, EventArgs e)
        {
            if (state == 0)
            {
                state = 1;
                labelStart.Text = "Stop";
                tmrMoving.Enabled = true;
                char[] chars = new char[5];
                InitializeLetters(chars);
                c1 = chars[0];
                c2 = chars[1];
                c3 = chars[2];
                c4 = chars[3];
                c5 = chars[4];
                labelPause.Show();
            }
}

【问题讨论】:

    标签: arrays forms random byte indexoutofboundsexception


    【解决方案1】:

    代替

    chars[i] = charspallete[buff[i] % 26 + 1];

    放这个

    chars[i] = charspallete[buff[i] % 26];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多