私はこの質問に対して馬鹿だと感じますが、なぜこのIndexOutOfRangeExceptionが起きているのか理解できません。なぜこのint配列がIndexOutOfRangeExceptionをスローしますか?
public int[, ,] FindTablePairings(System.Text.RegularExpressions.MatchCollection mcBegin, System.Text.RegularExpressions.MatchCollection mcEnd)
{
int[,,] intTablePairs = new int[mcBegin.Count, 1, 1];
int[] intBegin = new int[mcBegin.Count];
int[] intEnd = new int[mcBegin.Count];
for (int q = 0; q < mcBegin.Count; q++)
{
intBegin[q] = mcBegin[q].Index;
}
for (int q = 0; q < mcEnd.Count; q++)
{
intEnd[q] = mcEnd[q].Index;
}
int intBeginCount = mcBegin.Count;
int intEndCount = mcEnd.Count;
int i = 0;
int j = 0;
int k = 0;
while (i < intBeginCount)
{
j = i;
while (j < intEndCount)
{
if (intBegin[i + 1] < intEnd[j])
{
j++;
}
else
{
intTablePairs[i, 0, 0] = intBegin[i];
intTablePairs[i, 1, 0] = intEnd[j];
intEnd[j] = -1; //EXCEPTION OCCURS HERE
break;
}
}
if (j == intEndCount)
{
intTablePairs[i, 0, 0] = intBegin[i];
intTablePairs[i, 1, 0] = intEnd[j - 1];
intEndCount--;
}
while (k < intEndCount)
{
if (intEnd[k] == -1)
{
k++;
}
else
{
intTablePairs[i,0,0] = intBegin[i];
intTablePairs[i,1,0] = intEnd[k];
intEnd[k] = -1;
k=0;
break;
}
}
}
return intTablePairs;
}
コードはただ見ている:エラーがスローされている場所については、以下のコードを確認してください(私が意味する、私はそれが起こっているWHYを知って、私はちょうど私のコードについて無効であるかわかりません)開始タグと終了タグの出現の文字インデックス。複雑なものはありませんが、最悪の場合はintEnd[j] = -1;
に例外がスローされ、そのステートメントが実行される前にデバッガでintEnd[]
を含むすべての配列とMatchCollectionが適切に初期化され、配列が存在し、初期化されていることを確認するためにデバッグしました。また、ソリューションをクリーンアップして再構築しました。
ここには何が起こっているのかについてのご意見はありますか?
intEnd [j] = -1行でエラーが発生したようです。 –
@ AS-CIIはエラーではありませんが、それ以外の場合は直上の行もエラーになります。どちらも 'intEnd [j]'にアクセスします。 – JaredPar
私はあなたのソリューションが間違って書いていない;)彼はStackOverflowに自分のコードをコピーして間違っていたと思った。 –