C#Index超出了数组范围的特定帮助,请

时间:2013-09-29 17:52:17

标签: c# arrays

我正在制作一个小型程序来预订飞机上的座位 - 而且我一直收到这个错误。我想让节目向我展示飞机上的哪些座位(乘务员)正由哪位乘客(通道)预订。只是,如果我进入比我乘客多的座位,它就不会跑 - 我需要它才能允许空位(较少"通道和#34;比#34; flysaeder")。我做错了什么?

我对此有点新意,所以我为糟糕的解释道歉。

错误发生在" listeOverPassagerer [index] = listeOverPassagerer [i];"。

namespace eksamenvingerne
{
    public partial class Form1 : Form
    {
        int flysaeder;
        int passagerer;
        Random tilfældighed = new Random();

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            listBox2.Items.Clear();
            {
                int.TryParse(txtsaeder.Text, out flysaeder);
                int.TryParse(txtantalpassagere.Text, out passagerer);

                if (passagerer > flysaeder)
                {
                    MessageBox.Show("Ingen frie pladser!");
                }

                else
                {
                    int[] listeOverPassagerer = Enumerable.Range(0, passagerer).ToArray();
                    int[] flypladser = new int[flysaeder];

                    for (int i = 0; i < flysaeder; i++)
                    {
                        int index = tilfældighed.Next(0, passagerer);
                        flypladser[i] = tilfældighed.Next(i, passagerer);
                        flypladser[i] = listeOverPassagerer[index];
                        listeOverPassagerer[index] = listeOverPassagerer[i];
                    }

                    for (int i = 0; i < flypladser.Length; i++)
                    {
                        listBox1.Items.Add("Sæde #" + i + ": Passagernr.:" + flypladser[i]); //listboxen udskriver indholdet af hver eneste plads.

                    }
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

你的逻辑实际上导致了这个问题:

首先确保passagerer <= flysaeder

if (passagerer > flysaeder)
{
   MessageBox.Show("Ingen frie pladser!");
}

然后你做一个从0到flysaeder -1

的for循环
for (int i = 0; i < flysaeder; i++)

flysaeder可能会大于passagerer,因此您listeOverPassagerer[i]的访问权限会引发异常,因为listeOverPassagerer长度为passagerer