如何在txt文件中解析2列int

时间:2016-04-18 03:34:06

标签: java parsing int

我在.txt文档中以一种形式给出了一组数据:

0   1
0   3
0   4
0   5
0   6
0   7

......等等

我的问题是,我如何解析这个,以便将整数的左列放在一个数组中,同样也用于右列的数字。每对数字都有自己的一行。

在我给出的这组数据中,int[] leftColumn将全为零,int[] rightColumn将包含1,3,4,5,6,7。

3 个答案:

答案 0 :(得分:2)

java.util.Scanner已经完成了大部分繁重的工作,只需要使用它:

List<Integer> leftColumnTmp = new LinkedList<>();
List<Integer> rightColumnTmp = new LinkedList<>();
try (Scanner sc = new Scanner("myfile.txt")) {
    while (sc.hasNextLine()) {
        leftColumnTmp.add(sc.nextInt());
        rightColumnTmp.add(sc.nextInt());
    }
}

int[] leftColumn = leftColumnTmp.stream().mapToInt(Integer::intValue).toArray();
int[] rightColumn = rightColumnTmp.stream().mapToInt(Integer::intValue).toArray();

答案 1 :(得分:0)

逐行读取文件并按空格分割,然后将它们添加到数组中。

BufferedReader br = new BufferedReader(new FileReader(<PATH/TO/FILE>));
try {
    String line = br.readLine();
    List<Integer> leftColumn = new ArrayList<>();
    List<Integer> rightColumn = new ArrayList<>();
    while (line != null) {

        String strarray[] = line.split(" ");
        for (int count = 0; count < strarray.length ; count++) {
            leftColumn.add(Integer.parseInt(strarray[count]));
            rightColumn.add(Integer.parseInt(strarray[++count]));
        }
        line = br.readLine();
    }
    System.out.println("Left Column :"+leftColumn);
    System.out.println("Right Column :"+rightColumn);
}finally {
    br.close();
}

答案 2 :(得分:0)

使用java8时,有一种简单的方法可以读取文件:

List<Integer> left = new ArrayList(); 
List<Integer> right = new ArrayList();

Files.lines(Paths.get("c:\\lines.txt"))
    .map(l -> l.split("\\s")) 
    .forEachOrdered(l -> {
        left.add(Integer.parseInt(l[0]));
        right.add(Integer.parseInt(l[1]));
   });

如果你真的需要int[],你可以稍后转换它:

int[] leftArray = left.stream().mapToInt(Integer::intValue).toArray();
int[] rightArray = right.stream().mapToInt(Integer::intValue).toArray();
相关问题