从Text文件中的一行读取每个Integer

时间:2012-07-07 01:15:31

标签: java text-processing

我是Java新手。如何从文本文件中的一行读取每个整数。我知道读者类具有读取和读取行功能。但在我的情况下,我不仅要读取文件中的整数,还想知道行何时更改。因为每一行的第一个元素表示一个数组索引,所有相应的元素都是附加到该索引的链接列表值。

例如,请参阅下面的第4行。在这种情况下,我不仅要读取每个整数,而且每行的第一个整数都是一个数组索引,所以我将有一个4元素数组,每个数组元素对应一个列表,其中A [1] - > 4,A [2] - > 1,3,4和soo。

1 4

2 1 3 4

3 2 5

4 2

正确检索整数后,我计划通过

填充它们
ArrayList<Integer>[] aList =  (ArrayList<Integer>[]) new ArrayList[numLines];

编辑:我曾在一条评论中被问到我认为太过分了,以及我被困在哪里以下是我的想法(就原始和pseoudo代码混合而言)..

 while (lr.readLine() != null) {

        while ( // loop through each character)
                if ( first charcter)
                    aList[index] = first character;
                else 
                    aList[index]->add(second char.... last char of the line);
    }

由于

1 个答案:

答案 0 :(得分:0)

感谢扫描仪提示,Andrew Thompson。

这就是我实现它的方式

    Scanner sc =new Scanner(new File("FileName.txt"));

    ArrayList<Integer>[] aList = (ArrayList<Integer>[]) new ArrayList[200];
    String line;
    sc.useDelimiter("\\n");
    int vertex = 0;
    while (sc.hasNextLine()) {
        int edge = 0;
        line = sc.nextLine();
        Scanner lineSc = new Scanner(line);
        lineSc.useDelimiter("\\s");
        vertex = lineSc.nextInt() - 1;
        aList[vertex] = new ArrayList<Integer>();
        int tmp = 0;
        System.out.println(vertex);

        while (lineSc.hasNextInt()) {
            edge = lineSc.nextInt();
            aList[vertex].add(edge);
            System.out.print(aList[vertex].get(tmp) +  "  ");
            ++tmp;
        }
        System.out.println ();
    }