-1

我正在开发一个用于预订飞机座位的小程序 - 我一直收到这个错误。我希望程序向我显示飞机上的哪些座位 (flysaeder) 正在由哪个乘客 (passagerer) 预订。只是,如果我进入的座位比我的乘客多,它就不会运行 - 我需要它来允许开放座位(比“flysaeder”少“passagerer”)。我究竟做错了什么?

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

“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.

                    }
                }
            }
        }
    }
}
4

1 回答 1

2

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

首先你要确保passagerer <= flysaeder

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

然后你做一个从0到的for循环flysaeder -1

for (int i = 0; i < flysaeder; i++)

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

于 2013-09-29T18:10:53.260 回答