通过扫描仪将1行txt文件分配给字符串

时间:2012-02-03 19:54:28

标签: java java.util.scanner

正如标题所解释的那样,我试图将每一行分配给一个字符串(我的最终目标是让它从文本文件中拉出一行,然后使用下面的行作为答案,然后重复此操作直到文件已经完成)现在我只得到它将整个文件分配给一个字符串(行)。这是我的代码 -

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 个答案:

答案 0 :(得分:1)

您可以使用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);
}

答案 1 :(得分:0)

现在实现,你的行变量只包含执行结束时文件的最后一行。如果要存储每一行​​,可以将它们放在字符串的ArrayList中:

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