텍스트 파일에서 데이터 필드 이름을 내 프로그램으로로드하고 배열 변수에 저장하려고합니다.왜 나는 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) –
요소가 0 인 문자열 배열을 선언했습니다.이 배열에서 모든 종류의 인덱스를 사용할 수 없습니다. – Steve
다른 지점. 파일에 정확히 151 개의 행이나 151 개의 배수가 항상 포함되어 있습니까? – Steve