我有一个带有整数和双数的文本文件,如下所示:
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();
答案 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;,我认为它与我的方法相同