テキストファイルからデータフィールド名をプログラムにロードし、変数、配列に格納しようとしています。なぜ私はIndexOutOfRangeExceptionを取得しているのか分かりません
フィールド名は、他のファイルのデータをソートして整理された新しいドキュメントに印刷するために使用されます。
特に、ファイルのフィールドを配列に格納する際に、多くの問題があります。
データフィールドテキストファイルは、各フィールドが独自の行にあるリスト形式で構成されています。
StreamReaderのPeek()が-1になるまで実行されるwhileループを作成しました。
whileループ内でforループをネストし、インデックス整数変数を1だけインクリメントして、テキストファイルの行の総数以下になるまで入れ子にしました。
また、ReadLine()を使用して、テキストドキュメントの行を特定のインデックスの配列に格納します。私はforループでそれを使って各行を繰り返し、格納する必要があるものを格納すると考えました。
辞書の中のフィールドを使用して、そのフィールドをキーとして使用し、他のドキュメントのデータを辞書の値として使用する必要があります。
私が行ったやり方は、IndexOutOfRangeExceptionを避けるために必要な手段があると思いましたが、そうではないと思います。
私はこれを手伝ってくれる人に感謝します。何か不明な点がある場合はお詫びし、必要に応じて事態を明確にしようとします。
私未遂のロジックの説明はひどいものだった場合は、ここでのコードは次のとおりです。
class Program
{
protected static string[] dataFields = new string[] { };
static void Main(string[] args)
{
int iIndex;
using (StreamReader titleStream = new StreamReader(@"..\..\DataFieldsLayout.txt"))
{
while (titleStream.Peek() > -1)
{
for (iIndex = 0; iIndex <= 150; iIndex++)
{
// where the exception occurs
dataFields[iIndex] = titleStream.ReadLine();
}
}
}
// test
Console.WriteLine(dataFields[0]);
Console.WriteLine(dataFields[1]);
Console.WriteLine(dataFields[2]);
Console.WriteLine(dataFields[3]);
Console.WriteLine(dataFields[4]);
}
}
[IndexOutOfRangeExceptionとは何ですか?また修正するにはどうすればいいですか?](http://stackoverflow.com/questions/20940979/what-is-indexoutofrangeexception-and-how-do-i-fix-it) –
要素数がゼロの文字列を宣言しています。この配列にはどのような種類のインデックスも使用できません。 – Steve
別のポイントです。あなたのファイルには、常に正確に151行または151の倍数が含まれていますか? – Steve