我目前正在尝试创建一个根据信号强度估算位置的程序.信号强度值是一个int,然后我需要一个带范围的查找字典.
所以我会有类似的东西:
Signal Strenth Position
0-9 1
10-19 2
20-29 3
Run Code Online (Sandbox Code Playgroud)
然后我想查看信号强度所涉及的位置,例如15与位置2有关.
我知道我可以加载一些if语句但是有一种很好的方法可以使用某种查找字典吗?
Dan*_*ott 11
关于什么 :
int position = signalStrength / 10 + 1;
Run Code Online (Sandbox Code Playgroud)
善良,
担
dtb*_*dtb 11
如果您有任意但连续的范围,则可以使用上限数组并执行二进制搜索以获取位置:
// Definition of ranges
int[] ranges = new int[] { 9, 19, 29 };
// Lookup
int position = Array.BinarySearch(ranges, 15);
if (position < 0)
position = ~position;
// Definition of range names
string[] names = new string[] { "home", "street", "city", "far away" };
Console.WriteLine("Position is: {0}", names[position]);
Run Code Online (Sandbox Code Playgroud)
Array.BinarySearch 返回数组中项的索引(如果存在,则数组必须明显排序)或者应该插入项的按位反转索引,以保持数组的排序.
| 归档时间: |
|
| 查看次数: |
2774 次 |
| 最近记录: |