2011-12-20 58 views
0

我需要如有阵列成员从他人搜索内容对于不同的值

我在阵列中注册设备ID并且必须再检查一下是否任何不同装置连接的不同来搜索数组的内容?错误的设备可以连接任何可用的端口。所以在我拿到所有的ID之后,我需要检查是否所有的ID都是一样的。最多可以同时连接6个设备。设备ID将在运行时决定。

我写了下面的代码,但它不是一个有效的代码。我也需要能T为这段代码

private byte ArrayCheck(byte[] array) { 
     byte buffer=0; 
     bool result=false; 
     for (byte i = 0; i < array.Length; i++)  
     { 
      if (array[i] != 0)      
       buffer = array[i]; 
     } 

     for (byte i = 0; i < array.Length; i++) 
     { 
      if (array[i] != 0)      
      { 
       if (array[i] == buffer) 
        result = true;   
       else 
       { 
        result = false;   
        break; 
       } 
      } 
     } 
     if (result) 
      return buffer; 
     else 
      return 0; 
    } 

感谢已经

+0

我不太明白,这是怎么回事。什么端口?在你的代码中,你使用一个字节来迭代数组 - 你确定这足够吗?你究竟认为什么是“错误的”设备?设备是否应该具有相同的ID? – Fildor 2011-12-20 14:33:50

+0

我刚才看到:第二个循环中缓冲区总是数组[array.Length-1]。所以你只是在最后一个数组项中检查数组。 – Fildor 2011-12-20 14:40:09

+0

嘿fildor让我说清楚。有一个设备可以将6个从设备放在上面。因此,请逐一阅读所有这些设备,并告诉我他们的ID,然后将它们放入一个阵列中。测试所有6个设备他们必须是相同的。所以在我读完他们之后,我需要检查我的数组,如果他们发给我相同的ID。 – OOP 2011-12-20 17:56:10

回答

0

所有合作应答者得到错误的设备指数:谨慎的评论,他们说得清楚。

OOP:代码看起来像Java,对吧? 我不会进行比较,我只是计数。所以你只需要遍历一次数组,构建“桶”。例如,你可以用一个Map来做到这一点,其中id是关键字,count是值。然后找出最高计数项目,将其从地图中移除,剩下的键就是您的“错误”ID。也许有比地图更高效的实现。也许你甚至可以制作你自己的小数据结构,拿一个id,数一下,然后给你“错误”的id列表。
这样你甚至可以处理超过2个不同的ID。
对于两个id具有相同计数的情况,您必须弄清楚,您的客户需求是什么。也许你可以采取“第一” - 所以它会或多或少是随机的。

+0

你的建议启发了事情,但是一些代码在开始的时候会非常棒。顺便说一句,我使用的是C#。正如你看到的,我对C很满意,但C#对我来说是一件新事物。 – OOP 2011-12-21 19:26:54

+0

我明白了。在C#中,您可以使用Dictionary。也许字典<字节,列表>(我不太确定C#中的类型)。这样,您可以将该ID添加到列表中,并将计数作为list.length ...没有足够的代码时间,现在,对不起。 – Fildor 2011-12-22 14:23:46