Назначение 1 строки текстового файла в строку с помощью сканера - PullRequest
1 голос
/ 03 февраля 2012

Как видно из названия, я пытаюсь присвоить каждой строке одну строку (Моя конечная цель состоит в том, чтобы вытащить строку из текстового файла, затем использовать строку в качестве ответа, а затем повторять ее дофайл закончен) сейчас у меня есть только назначить весь файл в строку (строку).Вот мой код -

import java.io.*;
import java.util.Scanner;
import java.lang.*;
import javax.swing.JOptionPane;

public class Test {

public static void main(String[] args) {

    // Location of file to read
    File file = new File("a.txt");

    try {

        Scanner scanner = new Scanner(file);

        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            JOptionPane.showInputDialog("" + line);
        }
        scanner.close();
    } catch (FileNotFoundException e) {
     System.out.println("Can't find file");  
    }

}
}

Любая помощь оценена, или обходные пути, использующие другой импорт - спасибо.

Ответы [ 2 ]

1 голос
/ 04 февраля 2012

Вы можете использовать ArrayList из String для хранения строк, считанных из файла:

public static void main(String[] args) {

    // Location of file to read
    File file = new File("a.txt");
    List<String> lines = new ArrayList<String>();

    try {

        Scanner scanner = new Scanner(file);

        while (scanner.hasNextLine()) {
            lines.add(scanner.nextLine();
        }
        scanner.close();
    } catch (FileNotFoundException e) {
     System.out.println("Can't find file");  
    }
}

Список массивов lines будет содержать строки файла в том порядке, в котором онипоявился в файле, что означает, что вы можете перебирать массив lines, где lines.get(i) будет вопросом, а lines.get(i+1) будет ответом:

for (int i = 1; i < lines.size(); i+=2)
{
    String question = lines.get(i - 1);
    String answer   = lines.get(i);
    JOptionPane.showInputDialog("Question: " + question + " Answer:" + answer);
}
0 голосов
/ 04 февраля 2012

Как это реализовано сейчас, ваша строковая переменная содержит только последнюю строку файла в конце выполнения.Если вы хотите сохранить каждую строку, вы можете поместить их в ArrayList of Strings:

ArrayList<String> lines = new ArrayList<String>();
....
while (scanner.hasNextLine()) {
    String line = scanner.nextLine();
    lines.add(line);
    JOptionPane.showInputDialog("" + line);
}
...