假设我有一个名为“filename”的txt文件。里面的数据如下,java:从txt文件中提取点
N
12 39
34 23
12 22
5 7
7 10
11 8
.
.
.
左栏包含每个点的x值。右列包含每个点的y值。 N是随后的点数数据。我需要提取所有Point数据并将其存储在数据结构(如List)中。有什么办法可以做到吗?
假设我有一个名为“filename”的txt文件。里面的数据如下,java:从txt文件中提取点
N
12 39
34 23
12 22
5 7
7 10
11 8
.
.
.
左栏包含每个点的x值。右列包含每个点的y值。 N是随后的点数数据。我需要提取所有Point数据并将其存储在数据结构(如List)中。有什么办法可以做到吗?
File file = new File(filepath);
BufferedReader br = new BufferedReader(file.getInputStream);
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n-1; i++) // reads n-1 points, if you have n points to read, use n instead of "n-1"
{
line = br.readLine();
StringTokenizer t = new StringTokenizer(line, " ");
int x = Integer.parseInt(t.nextToken());
int y = Integer.parseInt(t.nextToken());
// do whatever with the points
}
这将工作这样的事情作为一个输入文件,
3 // line 1
1 2 // line 2
3 4 // line 3
从看这个(我学到了一些新东西,谢谢),它看起来像t.nextToken();无论如何返回一个字符串,所以演员没有必要 –
请注意,这将违反给定的输入,因为它不包括N. –
谢谢,编辑。 –
用我的解决方案的Scanner
代替BufferedReader
/StringTokenizer
:
Scanner scanner = new Scanner(new File("filename"));
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {
int x = scanner.nextInt();
int y = scanner.nextInt();
// do something with the point or store it
}
它可能不是那么快,但阅读和写作要容易得多。
你尝试过什么吗?你坚持什么?读文件?采摘数据结构?创建/插入数据结构? – Cruncher
在File类中使用Scanner类会让你有很多方法 –
我尝试使用Arraylist来存储这些点,但我不知道如何分隔这两列并将其分配给x或y一个点的值.. – catchwisdom