【发布时间】:2019-05-02 18:50:53
【问题描述】:
我试图弄清楚如何从文件中读取一些关于旅行商问题的数据。我已经包含了文件的前几行(其余 13503 行的格式相同,因此我删除了它们)。该文件如下所示:
NAME : usa12
COMMENT : Cities with population at least 500 in
TYPE : TSP
DIMENSION : 13509
EDGE_WEIGHT_TYPE : EUC_2D
NODE_COORD_SECTION
1 245552.778 817827.778
2 247133.333 810905.556
3 247205.556 810188.889
4 249238.889 806280.556
5 250111.111 805152.778
6 254475.000 804794.444
我对两件事感兴趣。维度值和城市坐标。显示了编号为1,..,6 的城市(但其中有13509 个),它们的x 和y 坐标都相邻。例如。城市 4 有 x=249238.889 和 y=806280.556。
基本上我想读取我的文件并像这样存储数据:
int dimension = read dimension of 13509
Coordinate[] xy = create coordinates array, with coordinates of each city
coordinate 对象的定义如下:
public class Coordinate {
double x;
double y;
public Coordinate(double x, double y) {
this.x = x;
this.y = y;
}
}
我想我需要使用缓冲读取器、一些 IO 异常和字符串标记器。我是新手,所以我不确定如何实现它。我不知道如何具体读取尺寸值和 x 和 y 坐标。有没有人有一些建议的实现?
【问题讨论】:
-
所以只有一个大文件,开头正好包含6行无用的行,剩下的是需要解析的数据?
-
@Doc 有多个大小相似的文件,但每次执行程序时我只会读取一个文件。所以本质上,是的,每次程序运行时,只有一个巨大的文件。从这个文件中,我只需要维度整数值,以及每个城市的坐标。所有其他数据都是无用的。所以正好有 5 行无用。
-
1.许多文件。 2.一次一个。 3. 每条开始时正好有 6 条无用的行。 4.有用的数据直到最后。是吗?
-
1.是的。 2. 是的。 3. 每个文件的开头有 5 行无用的行。名为
DIMENSION的行很有用。 4. 有用数据直到最后两行(最后两行只是空行)。 -
好的。发射记事本:)
标签: java file file-io bufferedreader stringtokenizer