2016-02-21 2 views
0

У меня есть цикл While, который читает файл. Проблема в том, что он читает 1 строку, затем пропускает один, читает, пропускает и т. Д. Я не могу понять, что заставляет его пропускать. Если кто-то может сказать мне, что «» быть удивительным (:C# skips readlines

StreamReader sentencesFile = new StreamReader(@"C:\Users\Jeroen\Desktop\School\C#\opwegmetcsharp\answersSen.txt"); 
string line; 

while ((line = sentencesFile.ReadLine()) != null) 
{ 
    string SentenceFileString = sentencesFile.ReadLine(); 
    string keyWords = line.Substring(0, line.IndexOf(' ')); 
    string sentence = line.Substring(line.IndexOf(' ') + 1); 
    string testOutput= keyWords + sentence; 
} 

ответ

8

Вы читаете линию внутри состояния while передачи контура уже не нужно читать его снова в качестве первого оператора в контуре

..
while ((line = sentencesFile.ReadLine()) != null) 
{ 
    string SentenceFileString = line; // can be removed 
    string keyWords = line.Substring(0, line.IndexOf(' ')); 
    string sentence = line.Substring(line.IndexOf(' ') + 1); 
    string testOutput = keyWords + sentence; 
} 
+1

Спасибо большое! Забыл удалить эту строку и не заметил, что она не сделала ничего, кроме разрушения кода:/Whoops – JeroenM

2

проблема здесь:

while ((line = sentencesFile.ReadLine()) != null) 
{ 
    string SentenceFileString = sentencesFile.ReadLine(); 

когда вы просите линии = обнулить вы уже читаете одну строку, это пропустит снова

string SentenceFileString = sentencesFile.ReadLine(); 

soution:

комментарий, что вторая линия (вы даже не используя переменную SentenceFileString) и продолжать работать с

время
while ((line = sentencesFile.ReadLine()) != null) 
{ 

    string keyWords = line.Substring(0, line.IndexOf(' ')); 
    string sentence = line.Substring(line.IndexOf(' ') + 1); 
    string testOutput= keyWords + sentence; 
}