-1

飛行機の座席を予約するための小さなプログラムに取り組んでいます - そして、このエラーが発生し続けます。飛行機のどの座席 (flysaeder) がどの乗客 (passagerer) によって予約されているかをプログラムに表示させたい。ただ、乗客がいるよりも多くの座席に入ると、それは実行されません-空席を許可する必要があります(「flysaeder」よりも「passagerer」が少ない)。私は何を間違っていますか?

私はこれにちょっと慣れていないので、説明が不十分で申し訳ありません。

「listeOverPassager[index] = listeOverPassager[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 に答える