我有一个清单。如果您输入的值在该列表中 - 结果将被返回。即使值超出了结果的范围 - 由于 mod % 将返回结果。真的很难用语言来解释我的问题,所以让我们看一下代码:
List<int> list1 = new List<int>(){ 0, 1, 2, 3, 4, 5, 6 };
int value = 3; // what's this number to us?
string result = "";
int starting_number = 3;
if (value == list1[(list1.IndexOf(starting_number) + 2) % list1.Count()])
{ result = "yeah"; }
else if (value == list1[(list1.IndexOf(starting_number) + 1) % list1.Count()])
{ result = "cool"; }
else if (value == list1[(list1.IndexOf(starting_number) + 0) % list1.Count()])
{ result = "one"; }
else if (value == list1[(list1.IndexOf(starting_number) - 1) % list1.Count()])
{ result = "noo"; }
else {result = "oops cant find it"; }
- 起始号码。这个数字是恒定的。所有的测量都与这个数字有关。
- value - 我们输入的值。我们需要得到这个值的结果
- 结果 - 只是一个字符串
这就是它的工作原理:
起始编号 = 3,值 = 2 => 结果 = “noo”(因为 2 = IndexOf(起始编号)- 1)
起始编号 = 6,值 = 0 => 结果 = “酷” (6 + 1 = 0)
起始编号 = 0,值 = 6 =>将发生错误。(0 - 1 = 6)
任何想法如何改进代码以消除此错误?基本上我可以抓取值是它们“在”starting_number 之后,但我不能在“starting_number 之前”抓取它们。
在(6 + 1 = 0)的情况下:列表看起来像这样 6,0,1,2,3...
在(0 - 1 = 6)的情况下:列表应该是这个 ...4,5,6,0
如果您有任何问题,请询问.. 用文字来解释问题真的很难,但我想例子可以更清楚地说明问题。
你如何获取低于starting_number的值?