如何用Java读取文件并保存每个项目

时间:2016-12-03 22:24:25

标签: java

我有一个带有整数和双数的文本文件,如下所示:

16 -122.454803 41.923870
17 -122.440536 41.946377
18 -122.440498 41.956013

我有3个列表(一个int和两个double列表),我想保存每列的项目。如何拆分项目并将其保存在列表中?

ArrayList<Integer> list1 = new ArrayList<Integer>();
    ArrayList<Double> list2 = new ArrayList<Double>();
    ArrayList<Double> list3 = new ArrayList<Double>();

    BufferedReader in = new BufferedReader(new FileReader("Nodes.txt"));

    String line;
    while((line = in.readLine()) != null){
        list1.setNodeId(line.split(" "));
        System.out.println(line);
    }
    in.close();

3 个答案:

答案 0 :(得分:2)

处理数据的一种方法:

String line;
while ((line = reader.readLine()) != null) {
    String[] parts = line.split(" ");
    if (parts.length != 3) {
        continue;
    }
    list1.add(Integer.parseInt(parts[0]));
    list2.add(Double.parseDouble(parts[1]));
    list3.add(Double.parseDouble(parts[2]));
}

但是:此代码缺少对数据类型的错误检查。我想你之后需要处理数据,因此我强烈建议您使用索引和位置字段以及要解析的GeoPosition方法编写parse(String)类(只是数据的名称猜测)每一行。与3个单独的列表相比,此后的元素列表更容易处理。

答案 1 :(得分:1)

String.split返回一个字符串数组。您需要采取适当的数组输入并将其转换为所需的值类型

        String[] entries = line.split(" ");
        list1.add(Integer.valueOf(entries[0]));
        list2.add(Double.valueOf(entries[1]));
        list3.add(Double.valueOf(entries[2]));

答案 2 :(得分:0)

您可以通过这种方式尝试;)

ArrayList<Integer> list1 = new ArrayList<Integer>();
ArrayList<Double>  list2 = new ArrayList<Double>();
ArrayList<Double>  list3 = new ArrayList<Double>();

Path path = Paths.get("C:/User/.../.../.../nodes.txt");

Scanner in = new Scanner(path);
double line;

while(in.hasNextDouble()){
    line = in.nextDouble();
    list1.add((int)line);

    line = in.nextDouble();
    list2.add(line);

    line = in.nextDouble();
    list3.add(line);


     System.out.println(line);
}
in.close();

不要忘记写出正确的路径,并告诉它是否有效;)

编辑:小心,我试过了&#34; 15.05&#34;我没有使用我的方法,它需要&#34; 15,05&#34;,我认为它与我的方法相同