为什么范围匹配循环会错过边界条件?

时间:2016-04-06 03:28:38

标签: c#

我在这做错了什么会使index = -1?当我将索引设置为> 0时,无论输入的字母是什么,它都只返回times数组中的最后一个元素。

char[] lastNameLetterArr = { 'a', 'e', 'j', 'p', 't' };
string[] timeSlotArr = { TIME5, TIME1, TIME2, TIME3, TIME4 };
int index;
index = lastNameLetterArr.Length - 1;
while (index > 0 && lastNameLetterCh < lastNameLetterArr[index])
    --index;
timeStr = timeSlotArr[index];

1 个答案:

答案 0 :(得分:1)

让索引一直变为负数1的一种方法是将lastNameLetterCh设置为大写字母。他们的UNICODE代码都低于a的代码,因此只有在达到-1时,您的循环才会停止。

要解决此问题,请在开始搜索之前将lastNameLetterCh转换为小写:

lastNameLetterCh = char.ToLower(lastNameLetterCh);