2013-01-20 40 views
-1

我有一個列表和一個數組,我想查找數組中的每個元素,以查找屬於該列表的任何範圍。 下面是一些代碼:如何查找屬於列表中的任何範圍的編號?

int[] number = {1, 2, 3, 5}; 
public List<double> m = new List<double>(); 
m.add(1); 
m.add(1.5); 
m.add(2.6); 
m.add(4); 
m.add(50); 

例如: 獲取元件在陣列例如在2和我看到的範圍(任何數量的在列表之間)的回答,通過列表==> 1.5和2.6

我想這將返回該輸出的方法:

find 1 range is {1} to {1.5} and 2 range is {1.5} to {2.6}

+1

[你嘗試過什麼?](http://mattgemmell.com/2008/12/08/what-have-you-tried/)這也可能是值得改寫你的問題,因爲它是一個小不清楚你想要做什麼。 –

+1

我也想看看你到目前爲止已經嘗試過.. –

+0

對不起,我很困惑。範圍2中的{1.5}和{2.6}如何? –

回答

0

我希望我有你想要的。

void Main() 
{ 
    var numbers =new [] {1, 2, 3, 5}; 

    //ordering to make sure that ranges is ascending order 
    var orderedRanges = new []{1, 1.5, 2.6, 4, 50}.OrderBy(v => v); 

    var valuesInRanges = numbers.Select(number => 
          FormatValueInRange(
          number, 
          orderedRanges.Last(range => range <= number), 
          orderedRanges.First(range => range > number))); 

    var result = "Find " + string.Join("and ", valuesInRanges); 

    Console.WriteLine (result); 
} 

private string FormatValueInRange(double val, double lower, double upper) 
{ 
    return string.Format(@"{0} is {{{1}}} to {{{2}}} ", val, lower, upper); 
} 

打印:

Find 1 is {1} to {1.5} and 2 is {1.5} to {2.6} and 3 is {2.6} to {4} and 5 is {4} to {50} 
+0

非常感謝你這是答案 – MohammadTofi

+0

@ITDeph太棒了。希望我不會收到太多的迴應你的提示。 –

+0

當然,最好是幫助新程序員開發解決問題的技巧,而不是簡單地爲他們提供複製粘貼代碼? –

0

您需要使用下面的邏輯(在僞代碼,以實例號):

rangeStart = 1 
rangeEnd = 7 

numberOne = 3.7 

if numberOne >= rangestart and numberOne <= rangeEnd 
    // number is in range 

numberTwo = 12 

if numberTwo >= rangestart and numberOne <= rangeEnd 
    // number is NOT in range 

這應該指向你在正確的方向來解決你的問題。試試看,如果您有任何問題,請告訴我們。

0
int[] numbers = new int[] { 1, 2, 3, 5 }; 
List<double> m = new List<double>(); 
m.Add(1); 
m.Add(1.5); 
m.Add(2.6); 
m.Add(4); 
m.Add(50); 

foreach (int n in numbers) 
{ 
    for (int i = 0; i < m.Count; i++) 
    { 
     try 
     { 
      if (m[i] <= n && m[i + 1] >= n) 
       MessageBox.Show(
        string.Format("{0} is between {1} and {2}", 
        n, m[i], m[i + 1])); 
     } 
     catch (Exception){ } 
    } 
} 
0

您可以使用LINQ。

List<double> m = new List<double>(); 
    m.Add(1); 
    m.Add(1.5); 
    m.Add(2.6); 
    m.Add(4); 
    m.Add(50); 

    m.Sort(); 

    int[] numbers = { 1, 2, 3, 5 }; 
    foreach (var item in numbers) 
    { 
     double min = m.Where(x => x <= item).Last(); 
     double max = m.Where(x => x > item).First(); 

     Console.WriteLine("find {0} range is {1} to {2}", item, min, max); 
    }