Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-从for循环中排除成员_C# - Fatal编程技术网

C#-从for循环中排除成员

C#-从for循环中排除成员,c#,C#,我想看看红色无人机是否进入绿色无人机的安全区域,反之亦然我的问题是调试显示,无人机0进入了无人机1安全区域,而无人机1进入了无人机0安全区域。我只想检查一次。 如何排除重复,以便只需检查一次 for(int i=0; i<drone.Length;i++) { for(int j=0;j<drone.Length;j++) { if (i == j) continue;

我想看看红色无人机是否进入绿色无人机的安全区域,反之亦然我的问题是调试显示,无人机0进入了无人机1安全区域,而无人机1进入了无人机0安全区域。我只想检查一次。

如何排除重复,以便只需检查一次

 for(int i=0; i<drone.Length;i++)
        {
            for(int j=0;j<drone.Length;j++)
            {
                if (i == j) continue;

                else if(drone[i].pos_atual().X <= drone[j].pos_atual().X +distancia &&
                   drone[i].pos_atual().X >= drone[j].pos_atual().X - distancia &&
                   drone[i].pos_atual().Y <= drone[j].pos_atual().Y + distancia &&
                   drone[i].pos_atual().Y >= drone[j].pos_atual().Y - distancia)
                {
                    Debug.WriteLine(i + "joined " + j +"safe area");
                }
            }
        }

for(int i=0;i您只需修改循环,这适用于不需要重复条件的任何组合:

for(int i = 0; i < drone.Length - 1; i++)
{
    for(int j = i+1; j < drone.Length; j++)
    {
        // etc.
for(int i=0;i
上面的循环将限制
i
j
的迭代,因此
j
始终大于
i
,因此如果(i==j)继续,您可以删除


一些与你的问题没有直接关系的笔记

  • 矩形安全区对无人机来说没有多大意义
  • 仅当所有元件的安全区具有相同的大小、形状和方向时,此检查才有效

您只需修改循环,这适用于不需要重复条件的任何组合:

for(int i = 0; i < drone.Length - 1; i++)
{
    for(int j = i+1; j < drone.Length; j++)
    {
        // etc.
for(int i=0;i
上面的循环将限制
i
j
的迭代,因此
j
始终大于
i
,因此如果(i==j)继续,您可以删除


一些与你的问题没有直接关系的笔记

  • 矩形安全区对无人机来说没有多大意义
  • 仅当所有元件的安全区具有相同的大小、形状和方向时,此检查才有效
  • 我建议你们将检查当前无人机安全区域内的其他无人机转移到无人机等级
  • 我还想坚持只验证坐标。也就是说,稍后你们将能够检查是否有任何其他物体在无人机的安全区域
  • 在验证安全区域时,不应该检查矩形。我认为它应该是圆形的
  • 无人机等级:

    public class Drone
    {
        public int Id { get; }
        public Point Location { get; }
        public int SafeAreaRange { get; } // can be constant
    
        public bool SafeAreaContains(Point location)
        {
            var dx = Math.Abs(Location.X - location.X);
            var dy = Math.Abs(Location.Y - location.Y);
            var distance = Math.Sqrt(Math.Pow(dy, 2) + Math.Pow(dx, 2));
            return distance < SafeAreaRange;
        }
    }
    
  • 我建议你们将检查当前无人机安全区域内的其他无人机转移到无人机等级
  • 我还想坚持只验证坐标。也就是说,稍后你们将能够检查是否有任何其他物体在无人机的安全区域
  • 在验证安全区域时,不应该检查矩形。我认为它应该是圆形的
  • 无人机等级:

    public class Drone
    {
        public int Id { get; }
        public Point Location { get; }
        public int SafeAreaRange { get; } // can be constant
    
        public bool SafeAreaContains(Point location)
        {
            var dx = Math.Abs(Location.X - location.X);
            var dy = Math.Abs(Location.Y - location.Y);
            var distance = Math.Sqrt(Math.Pow(dy, 2) + Math.Pow(dx, 2));
            return distance < SafeAreaRange;
        }
    }
    


    对于第二个循环,为i+1启动它,例如从您自己开始的循环,这样您只会检查您尚未检查的项目。您很聪明。我认为我会工作。移动是相对的。除非您定义绿色=静止,红色=移动,进入;并在无人机对象上显示一个属性来指示这一点,否则无法判断“哪一个进入”然后你必须改变无人机“移动”"动作包括检查,所以你检查它是否移动到其他人的范围内,而不是所有其他人的范围内…对于第二个循环,从i+1开始,例如从你自己开始,所以你只检查你尚未检查的项目。你很聪明。我想我会工作。移动是相对的。除非你定义绿色=静止,红色=移动,ent并在无人机对象上显示一个属性来表示这一点,将无法判断“输入了哪一个”。然后您必须更改无人机的“移动”行动包括检查,所以你检查它是否进入其他人的范围,而不是所有其他人的范围…我仍然有一个问题。我如何知道无人机0是否进入无人机1安全区域?我想知道是谁进入的。因为你的方式总是让我知道无人机0进入了无人机1的安全区域,即使是无人机1进入了无人机0的安全区域区域然后定义“已输入”,无人机对象上是否有属性(类似于朋友/敌人标记)我不明白你的意思,对不起,我只能每90分钟问一次问题。我认为这与我的问题有关。我仍然有一个问题。我怎么知道无人机0是否进入了无人机1安全区?我想知道是谁进入的。因为你的方式总是让我知道无人机0进入了drone1的安全区域即使是无人机1进入了无人机0的安全区域,然后定义“已进入”,无人机对象上是否有属性(类似于朋友/敌人标记)我不明白你的意思,对不起,我只能每90分钟问一次问题。我想这与我的问题有关。但我想知道谁进入了谁的安全区,因为我需要向进入的无人机发出离开的命令。比如呆在保险箱外面area@TiagoSilva如果b其他无人机正在移动,谁进入了谁的安全区域?你说得对。我现在将尝试你的代码并很快回复。谢谢帮助。我还需要知道如何画一个圆圈作为安全区域。这是一个图表。我只是在图上画线。你的代码似乎工作正常。我正在使用位置和所需的位置。想象无人机进入了安全区域。我怎么能告诉他呆在安全区外?我需要给他一个新的想要的位置,但哪一个?但我想知道谁进入了谁的安全区,因为我需要向进入的无人机发出离开的命令。比如呆在安全区外area@TiagoSilva如果两架无人机都在移动,谁进入了谁的安全区域?你说得对。我现在会试试你的代码,很快会回复。谢谢你的帮助。我还需要知道如何画一个圆圈作为安全区。这是一个图表。我只是在图上画线。你的代码似乎很好。我正在使用位置和所需的位置。想象无人机进入安全区。我如何告诉他留在安全区之外?我需要给出h我是一个新的理想位置,但哪一个?
     var intersections = from a in drones
                         from b in drones
                         where a.Id != b.Id && a.SafeAreaContains(b)
                         select new { DroneId = a.Id, InvaderId = b.Id };
    
     foreach(var i in intersections)
         Debug.WriteLine($"{i.InvaderId} joined {i.DroneId} safe area");