我正在制作一个小型程序来预订飞机上的座位 - 而且我一直收到这个错误。我想让节目向我展示飞机上的哪些座位(乘务员)正由哪位乘客(通道)预订。只是,如果我进入比我乘客多的座位,它就不会跑 - 我需要它才能允许空位(较少"通道和#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.
}
}
}
}
}
}
答案 0 :(得分:2)
你的逻辑实际上导致了这个问题:
首先确保passagerer <= flysaeder
if (passagerer > flysaeder)
{
MessageBox.Show("Ingen frie pladser!");
}
然后你做一个从0到flysaeder -1
for (int i = 0; i < flysaeder; i++)
但flysaeder
可能会大于passagerer
,因此您listeOverPassagerer[i]
的访问权限会引发异常,因为listeOverPassagerer
长度为passagerer