我们被要求创建一个程序,该程序需要飞机上的座位和乘客的 2 个输入(我已解析),并在一个输出中将乘客随机放置在飞机上的座位上,并将剩余座位放置在一个输出中。二次输出。
我想知道是否有一种简单的方法可以将 HashSet
中的剩余值替换为 listBoxLedige
。
就目前而言,席位正在分配,但第二个输出中的值与第一个输出无关。
if(passengers > seats)
{
MessageBox.Show("For mange passagerer");
}
else
{
HashSet<int> check = new HashSet<int>();
for(int i = 0; i <= passengers - 1; i++)
{
int resultat = rnd.Next(1, seats + 1);
while(check.Contains(resultat))
{
resultat = rnd.Next(1, seats + 1);
}
check.Add(resultat);
int[] passagerer01 = new int[passengers];
passagerer01[i] = i+1;
listBoxFulde.Items.Add("Passager #" + passagerer01[i] + "på sæde #" + resultat);
}
HashSet<int> ledige01 = new HashSet<int>();
for(int i = 0; i <= (seats - passengers - 1); i++)
{
int tilbage = rnd.Next(1, seats + 1);
while(ledige01.Contains(tilbage))
{
ledige01.Add(tilbage);
}
listBoxLedige.Items.Add("Sæde #" + tilbage);
最佳答案
我不太确定我是否理解您的问题,但是您是否看过 Except
LINQ 扩展方法?根据您的措辞(“剩余值”)判断,这可能是适合您的方法。
编辑具体操作如下:
IEnumerable<int> empty = allSeats.Except(check);
请注意 empty
现在如何成为延迟枚举器(除非您执行 .ToArray()
、.ToList()
或类似的内容)。
关于c# - HashSet 中的剩余值进入辅助输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19039625/