2012-05-28 51 views
0

我需要將一個.txt文件解析爲三個雙精度數組。這個文件有很多行。在每一行中有三個空格劃分的內容。從多行文本文件中獲取一個整數向量

實施例:

19.1 24.3 0 
18.2 24.0 0 
12.6 24.9 20 
14.4 28.0 20 

我的目標是得到三個雙陣列(xyz),並且每個陣列中應該有一列。所以結果應該是一樣的編寫以下指令:

double[] x = {19.1,18.2,12.6,14.4}; 
double[] y = {24.3,24.0,24.9,28.0}; 
double[] z = {0,0,20,20}; 

我知道如何打開和讀取文件,像這樣:

String file = "filename.txt"; 
String line=null; 
FileReader fr = new FileReader(file); 
BufferedReader br = new BufferedReader(fr); 
while(!(line=br.readLine()).contains("EOF")) { 
    // read and process one line.. 
} 

我不知道該怎麼辦是如何解析當前行的每個數字並將其分配給三個向量之一。

+0

您可能想看看[Scanner](http://download.oracle.com/javase/7/docs/api/java/util/Scanner.html)類。 – Howard

+1

爲什麼不讀取文件直到結束,而不是閱讀它的一些行中包含EOF? –

+0

好吧,因爲我用它來自VB6以後,但你是對的。此外掃描儀類是一個很好的可能性 – dragonmnl

回答

2

你可以簡單地劃分和分析每一行如下:

String[] row = line.split("\\s+"); 
double d1 = Double.parseDouble(row[0]); 
double d2 = Double.parseDouble(row[1]); 
double d3 = Double.parseDouble(row[2]); 

而且,如果沒有,那麼固定的行數它會更容易,使使用的Double小號ArrayList!而非更有意義數組double s。

+0

well.my代碼不完整,所以我無法測試它。不過謝謝你,我會接受你的回答 – dragonmnl

+0

@dragonmnl:就像JB Nizet在他上面的評論中所說的那樣,「EOF」真的會在你的輸入文件中出現。我問這是因爲,我在上面的示例中沒有看到一個。 –