相比基本上我有和大小不等的整數數組。我需要將每個號碼與其他號碼進行比較,並顯示重複的號碼。例如:整數數組整數VB.NET
Dim ints() As Integer = {1,2,2,5,4,6}
顯示一次以上的數量爲2。
如何可以通過陣列上運行,並且每個整數與陣列中的數字進行比較。我嘗試了一個for循環,但它沒有返回我正在尋找的值。我是VB.NET新手,並不完全理解。
相比基本上我有和大小不等的整數數組。我需要將每個號碼與其他號碼進行比較,並顯示重複的號碼。例如:整數數組整數VB.NET
Dim ints() As Integer = {1,2,2,5,4,6}
顯示一次以上的數量爲2。
如何可以通過陣列上運行,並且每個整數與陣列中的數字進行比較。我嘗試了一個for循環,但它沒有返回我正在尋找的值。我是VB.NET新手,並不完全理解。
Dim ints() As Integer = {1,2,2,5,4,6}
Dim repeatedNumbers = ints.GroupBy(Function(intValue) intValue) _
.Where(Function(grp) grp.Count > 1)
For each grp in repeatedNumbers
Console.WriteLine("Number {0} is repeated {1} times", grp(0), grp.Count)
Next
這段代碼的含義:
感謝您的回覆,此解決方案效果最佳。我的問題是'Function(x)'和'Function(grp)'是什麼,我只是想確保我完全理解我得到的是什麼。 – 2012-02-02 16:02:48
它們是lambda表達式,通常與GroupBy和Where等Linq函數一起使用。請檢查下面的MSDN鏈接lambda表達式:http://msdn.microsoft.com/en-us/library/bb531253.aspx – 2012-02-02 16:34:18
我還編輯了答案,試圖解釋代碼做什麼。希望能幫助到你 – 2012-02-02 17:03:55
我會像這樣嘗試:
Dim ints() As Integer = {1, 2, 2, 5, 4, 6}
Array.Sort(ints)
For i = 1 To ints.GetUpperBound(0)
If ints(i) = ints(i - 1) Then MessageBox.Show(String.Format("{0} is repeated", ints(i)))
Next
做這這樣的排序陣列上保留下來的嵌套。
我沒有測試這一點,但它應該是沿着正確的線路。
不是一個錯誤的解決方案,但如果一個數字出現兩次以上,您將看到兩個或更多的消息。 – 2012-02-02 14:01:06
我很簡單地開始工作,但是,你是對的,它可能更微妙。 – 2012-02-02 14:12:45
你可以使用LINQ找到重複:
Dim repeating = (From n In ints
Group By n Into Dups = Group
Where Dups.Count > 1
Select Dups.First).ToArray()
這將返回只包含不在原始數組中唯一的數字整數數組。
因此,這顯示了重複號碼:
MessageBox.Show(String.Format("Duplicates found: {0}", String.Join(","c, repeating)))
你能爲循環添加?然後,我們可以提供什麼是不正確的提示。 – 2012-02-02 13:45:34