假設我有一個名爲「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