2011-12-20 67 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