2013-10-15 38 views
0

假设我有一个名为“filename”的txt文件。里面的数据如下,java:从txt文件中提取点

N 
12 39 
34 23 
12 22 
5 7 
7 10 
11 8 
    . 
    . 
    . 

左栏包含每个点的x值。右列包含每个点的y值。 N是随后的点数数据。我需要提取所有Point数据并将其存储在数据结构(如List)中。有什么办法可以做到吗?

+3

你尝试过什么吗?你坚持什么?读文件?采摘数据结构?创建/插入数据结构? – Cruncher

+0

在File类中使用Scanner类会让你有很多方法 –

+0

我尝试使用Arraylist来存储这些点,但我不知道如何分隔这两列并将其分配给x或y一个点的值.. – catchwisdom

回答

2
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 
+0

从看这个(我学到了一些新东西,谢谢),它看起来像t.nextToken();无论如何返回一个字符串,所以演员没有必要 –

+1

请注意,这将违反给定的输入,因为它不包括N. –

+0

谢谢,编辑。 –

1

用我的解决方案的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 
} 

它可能不是那么快,但阅读和写作要容易得多。