2015-08-01 7 views
1

Я пытаюсь прочитать информацию из файла, чтобы ее интерпретировать. Я хочу прочитать каждый ввод строки. Недавно я узнал о буферизаторе. Однако проблема с моим кодом заключается в том, что он пропускает каждую другую строку.Чтение строк с BufferedReader

Например, когда я помещаю 8 строк данных, он печатает только 4 из них. Четные.

Вот код:

import java.io.*; 
import java.util.Scanner; 

public class ExamAnalysis 
{ 
    public static void main(String[] args) throws FileNotFoundException, IOException 
    { 

    int numOfQ = 10; 

    System.out.println(); 
    System.out.println("Welcome to Exam Analysis. Let’s begin ..."); 
    System.out.println(); 
    System.out.println(); 

    System.out.println("Please type the correct answers to the exam  questions,"); 
    System.out.print("one right after the other: "); 
    Scanner scan = new Scanner(System.in); 
    String answers = scan.nextLine(); 

    System.out.println("What is the name of the file containing each student's"); 
    System.out.print("responses to the " + numOfQ + " questions? "); 
    String f = scan.nextLine(); 
    System.out.println(); 

    BufferedReader in = new BufferedReader(new FileReader(new File(f))); 
    int numOfStudent= 0; 

    while (in.readLine() != null) 
    { 
     numOfStudent++; 
     System.out.println("Student #" + numOfStudent+ "\'s responses: " + in.readLine()); 
    } 
    System.out.println("We have reached “end of file!”");    
    System.out.println(); 
    System.out.println("Thank you for the data on " + numOfStudent+ " students. Here is the analysis:"); 
    } 
} 
} 

Я знаю, что это может быть немного плохой стиль письма. Я просто очень люблю кодирование. Поэтому, если есть какой-либо способ помочь мне исправить стиль кода и методы, я был бы очень взволнован.

Пункт программы - сравнить ответы с правильным ответом. Таким образом, у меня есть другой вопрос:

Как можно сравнивать строки с буферным Reader? Как я могу сравнить ABCCED с ABBBDE, чтобы увидеть, что первые два матча, а остальные нет.

Спасибо

+0

Когда я помещаю 8 строк данных, он печатает только 4 из них 'readLine()'? http://stackoverflow.com/questions/13102045/skipping-nextline-after-using-next-nextint-or-other-nextfoo-methods – Satya

+0

@ Сатья, нет, это не мой вопрос. Не могли бы вы помочь? –

ответ

0

Вы не сравнивайте строк с readLine(). Вы сравните их с String.equals().

Ваш код чтения пропускает каждую нечетную строку по причине, упомянутой в duplicate.

+0

Привет, спасибо за ваш ответ. Я пробовал прочитать этот файл, но это не имело смысла для меня. Прошу прощения, если я задаю слишком много, но вы можете показать мне, как я могу исправить проблему. Я свяжусь, чтобы учиться, и ваша помощь будет высоко оценена. Спасибо. :) –

1

проблема с моим кодом является то, что он пропускает все остальные строки

Ваш чек EOF thows линия прочь на каждой итерации

while (in.readLine() != null) // read (first) line and ignore it 
{ 
    numOfStudent++; 
    System.out.println("Student #" + numOfStudent+ "\'s responses: " + 
    in.readLine()); // read (second) next line and print it 
} 

, чтобы прочитать все строки выполните следующие действия:

String line = null; 
while (null != (line = in.readLine())) // read line and save it, also check for EOF 
{ 
    numOfStudent++; 
    System.out.println("Student #" + numOfStudent+ "\'s responses: " + 
    line); // print it 
} 

Для сравнения строк вам необходимо использовать String#compareTo(String other) метод. Две строки равны, если возвращаемое значение равно 0.

Смежные вопросы