2016-04-06 15 views
-2

index = -1とは何ですか?インデックスを> 0に設定すると、入力された文字にかかわらず、times配列の最後の要素のみが返されます。あなたのインデックスがすべての方法負の1に行くために取得するレンジマッチングループが境界条件を満たさないのはなぜですか?

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]; 
+0

timeStrは、すでに以前のコード – bloop

+3

可能な重複の文字列変数として宣言されている[IndexOutOfRangeExceptionで何を、どのように私はそれを修正しますか?](@stackoverflow.com/questions/20940979/what-is-indexoutofrangeexception-and-how-do-i-fix-it) –

+0

@MarkMコードの前半に宣言されたchar変数です。この変数は生徒の姓の最初の文字を引っ張ります。上記の配列で検索するとtimeStr変数からタイムスロットを出力する必要があります – bloop

答えて

1

一つの方法は、大文字手紙にlastNameLetterChを設定することです。 UNICODEコードはすべてaコードよりも小さいので、ループは-1に達したときにのみ停止します。あなたの検索を開始する前に小文字にlastNameLetterChを変換し、この問題を解決するには

lastNameLetterCh = char.ToLower(lastNameLetterCh); 
+0

はい、データ入力の検証後にlastNameLetterCharを変換しました – bloop

+0

@bagorb 'lastNameLetterCh'が文字である限り、コードは負のインデックス([demo](http://ideone.com/gsMby4) ) – dasblinkenlight

関連する問題