2016-07-25 3 views
-2

Я пытаюсь создать массив, который будет собирать все строки во всех файлах в директории, я думал, что это наконец-то, но когда массив строк получает вход 111 он падает с IndexOutOfRangeExceptionМожет ли массив строк пройти мимо 111?

string[] WordList = new string[AdjectiveListLength]; 
Console.WriteLine("Length .. " + AdjectiveListLength); 
Console.WriteLine("String Length .. " + WordList.Length); 
int o = 0; 
for (int i = 0; i < FileEntries.Length; i++) 
{ 
    WordList = File.ReadAllLines(FileEntries[i]); 
    foreach (string s in WordList) 
    { 
     Console.WriteLine(s + " .. " + i + " .. " + o); 
     WordList[o] = s; 
     //o += 1; 
    } 
} 

Исключение указывает на int Я прокомментировал, когда я получу ошибку, я пытался получить это в течение нескольких часов, и я, наконец, получил это далеко, я чувствую, что я на расстоянии 1 дюйма от финиша, но я не может понять, что происходит.

+4

хорошо, что 'AdjectiveListLength' определено быть? Я предполагаю, что это 110. –

+0

жаль, что я пытался отредактировать его сейчас, чтобы уточнить, я убедился, что это правильная длина, которая равна 582 http://i.imgur.com/hk0lmVC.png вот изображение, показывающее он отображается с использованием Console.WriteLine («Длина ..» + AdjectiveListLength); Console.WriteLine ("Длина строки .." + WordList.Length); –

+1

Зачем использовать массив вместо 'List '? – LarsTech

ответ

0

Лучший способ для решения этой задачи является использование List<string>, которые можно было бы использовать, не зная заранее длины каждого файла в вашем FileEntries массиве

List<string> WordList = null; 
for (int i = 0; i < FileEntries.Length; i++) 
{ 
    WordList = File.ReadLines(FileEntries[i]).ToList(); 
    foreach (string s in WordList) 
     Console.WriteLine(s + " .. " + i); 

    // If you want also the line number then you could just use normal for..loop and C# 6.0 syntax 
    for(int o = 0; o < WordList.Count(); o++) 
     Console.WriteLine($"File:{i} at line {o} is ..{WordList[o]}"); 



} 

Если вы действительно хотите использовать массивы, то вы не нужно размерности массива, поскольку File.ReadAllLines уже создает массив для вас

string[] WordList = null; 
for (int i = 0; i < FileEntries.Length; i++) 
{ 
    WordList = File.ReadAllLines(FileEntries[i]); 
    foreach (string s in WordList) 
     Console.WriteLine(s + " .. " + i); 
} 
Смежные вопросы