我的程序问题涉及到arraylists,bufferedreader,方法,以及java如何工作的整体遗忘

时间:2010-09-20 02:29:04

标签: java class methods arraylist bufferedreader

我一直在努力学习一整天的课程。我正在尝试读取文本文件并一次读取每一行。拿出那条线,然后用线条的字词组成一个arraylist。然后使用arraylist的索引定义术语。

public class PCB {

    public static void main(String arg[]) {
        read();
    }

    public static ArrayList read() {    
        BufferedReader inputStream = null;
        ArrayList<String> tokens = new ArrayList<String>();
        try {
            inputStream = new BufferedReader(new FileReader("processes1.txt"));

            String l;
            while ((l = inputStream.readLine()) != null) {
                Scanner tokenize = new Scanner(l);
                while (tokenize.hasNext()) {
                    tokens.add(tokenize.next());
                }
                return tokens;
            }
        } catch (IOException ioe) {
            ArrayList<String> nothing = new ArrayList<String>();
            nothing.add("error1");
            System.out.println("error");
            //return nothing;
        }
        return tokens;
    }
}

我得到的错误是它只读取第一行。我究竟做错了什么? 非常感谢你提前

3 个答案:

答案 0 :(得分:2)

你有“回归令牌”;在你的while循环中。似乎早期的回归会有效地切断第一行的处理。

答案 1 :(得分:0)

尝试将循环更改为以下内容。请注意我如何移动return语句。

while ((l = inputStream.readLine()) != null) {
    Scanner tokenize = new Scanner(l);
    while (tokenize.hasNext()) {
        tokens.add(tokenize.next());
    }
}
return tokens; // <-- outside the loop

编辑:如果您想要读取整个文件并将每行的标记存储在一个单独的数组中,那么您可以创建一个ArrayList ArrayList。< / p>

public static ArrayList<ArrayList<String>> tokenizeFile(string filename) {    
    BufferedReader inputStream = new BufferedReader(new FileReader(filename));
    ArrayList<ArrayList<String>> lines = new ArrayList<ArrayList<String>>();

    while (true) {
        String line = inputStream.readLine();
        if (line == null) break;

        ArrayList<String> tokens = new ArrayList<String>();
        Scanner tokenizer = new Scanner(line);
        while (tokenizer.hasNext()) {
            tokens.add(tokenizer.next());
        }
        lines.Add(tokens);
    }
    return lines;
}

注意:我的Java生锈了。

答案 2 :(得分:0)

简化为此......

        String l;
        while ((l = inputStream.readLine()) != null) {
            tokens.addAll(Arrays.asList(l.split(" ")));
        }

...在文件的所有行上创建所有标记的列表(如果这是您想要的)。