2015-02-21 2 views
1

У меня есть текстовый файл, который я читаю, используя BufferedReader. Текстовый файл имеет форму, (String, String, Integer). Я читаю каждую строку, используя метод inFile.readLine() и конвертируя в String. Я думаю, что я могу извлечь часть его Integer.parse, но это не позволяет мне использовать nextLine(), я думаю, потому что это для Scanner, а не BufferedReader.Чтение строки и целочисленного ввода из текстового файла

Вот что у меня есть:

try{ 
    String nextLine; 
    String title = ""; 
    String department = ""; 
    int year; 

    BufferedReader inFile = new BufferedReader(new FileReader(inputName)); 

    while((nextLine = inFile.readLine())!= null){ 

    title = nextLine.nextLine(); 
    department = nextLine.nextLine(); 
    year = Integer.parseInt(nextLine); 
    newList.addCourse(new Course(title, department, year)); 
    } 

    inFile.close(); 
    } 

Кто-нибудь знает, как я полагаю, читать String часть моего текстового файла?

+1

вы читали javadoc? 'String' не имеет метода' nextLine() '. –

+0

Я имею в виду, что вы можете проверить« String »с помощью Scanner и' nextLine() '. I.e: 'Строковое предложение = scanner.nextLine();' И мне просто интересно, есть ли что-то подобное для BufferedReader – hello

ответ

0

nextLine является String, String не имеет метода nextLine. Но почему вы хотите позвонить nextLine на строку, которая уже назначена следующая строка в этом состоянии

while((nextLine = inFile.readLine())!= null) 

Если ваша информация всегда приходят на группу из 3 линий (название, deparment и год), то вы можете сделать:

while((nextLine = inFile.readLine())!= null){ 

    title = nextLine; 
    department = inFile.readLine(); 
    year = Integer.parseInt(inFile.readLine()); 
    newList.addCourse(new Course(title, department, year)); 
} 

Однако, убедитесь, что они всегда находятся в группе из 3 строк, иначе вы столкнулись с исключением.

Лучше всего было бы, чтобы все 3 Данные по одной и той же линии, разделенные разделителем, так что вы можете просто сделать: «Я думаю, потому что это для сканера, а не BufferedReader»

String[] info; 
while((nextLine = inFile.readLine()) != null) 
{ 
    info = nextLine.split(";");//; would be the delimiter 
    title = info[0]; 
    department = info[1]; 
    year = Integer.parseInt(info[2]); 
} 
+0

Спасибо! Я думаю, что ваш метод разделителя - это то, что я должен делать. Когда вы будете использовать цикл 'for' для назначения значений? – hello

+0

@hello вы назначаете значения 3 различным переменным. Чтобы назначить их в цикле for, вам нужно будет проверить их, что является дополнительным процессом для ничего, если вы уже знаете, что они представляют. –

0

Лучше использовать сканер для своей задачи. Но вам нужно указать какой-либо разделитель, если Title или department имеют пробелы.

try{ 
    String nextLine; 
    String title = ""; 
    String department = ""; 
    int year; 

    BufferedReader inFile = new BufferedReader(new FileReader(inputName)); 
    Scanner in = new Scanner(inFile); 
    while((nextLine = inFile.readLine())!= null){ 

     title = in.next(); //if title has spaces, you need to use next(Pattern) instead or delimiter 
     department = in.next(); //if department has spaces, you need to use next(Pattern) instead or delimiter 
     year = in.nextInt(); 
     newList.addCourse(new Course(title, department, year)); 
    } 

    inFile.close(); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
Смежные вопросы