2013-10-15 2 views
0

Предположим, у меня есть txt-файл, называемый «filename». Внутренние данные следующие:java: извлечь точки из txt-файла

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

В левой колонке содержится значение x каждой точки. В правой колонке содержится значение y каждой точки. N - количество строк, которые следуют за точкой. Мне нужно извлечь все данные Point и сохранить их в структуре данных (например, List). Есть ли способ сделать это?

+3

Вы пробовали что-нибудь? На что ты застрял? Чтение файла? Выбор структуры данных? Создание/вставка в структуру данных? – Cruncher

+0

Использование класса Scanner в классе File даст вам довольно много пути –

+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 
} 

Это, вероятно, не так быстро, но его гораздо легче читать и писать.

Смежные вопросы