2011-05-11 208 views
6

我是Java的新手。我有一個文本文件,內容如下。Java從文本文件中讀取值

 
`trace` - 
structure(
list(
    "a" = structure(c(0.748701,0.243802,0.227221,0.752231,0.261118,0.263976,1.19737,0.22047,0.222584,0.835411)), 
    "b" = structure(c(1.4019,0.486955,-0.127144,0.642778,0.379787,-0.105249,1.0063,0.613083,-0.165703,0.695775)) 
) 
) 

現在我想的是,我需要得到「A」和「B」是兩個不同的數組列表。

+4

「爲兩個不同」?你需要嘗試更清楚地解釋你想要的。也許在此期間,[Java I/O教程](http://download.oracle.com/javase/tutorial/essential/io/)可能對您有用。 – 2011-05-11 08:38:29

+1

兩個不同的...列表? :) – 2011-05-11 08:39:57

+0

請更具體一點。什麼是和什麼是B? – 2011-05-11 08:40:49

回答

7

您需要逐行讀取文件。它與BufferedReader這樣做:

try { 
    FileInputStream fstream = new FileInputStream("input.txt"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); 
    String strLine;   
    int lineNumber = 0; 
    double [] a = null; 
    double [] b = null; 
    // Read File Line By Line 
    while ((strLine = br.readLine()) != null) { 
     lineNumber++; 
     if(lineNumber == 4){ 
      a = getDoubleArray(strLine); 
     }else if(lineNumber == 5){ 
      b = getDoubleArray(strLine); 
     }    
    } 
    // Close the input stream 
    in.close(); 
    //print the contents of a 
    for(int i = 0; i < a.length; i++){ 
     System.out.println("a["+i+"] = "+a[i]); 
    }   
} catch (Exception e) {// Catch exception if any 
    System.err.println("Error: " + e.getMessage()); 
} 

假設你"a""b"是該文件的第四和第五行,你需要打電話的時候,這些線被滿足的方法,將返回的double數組:

private static double[] getDoubleArray(String strLine) { 
    double[] a; 
    String[] split = strLine.split("[,)]"); //split the line at the ',' and ')' characters 
    a = new double[split.length-1]; 
    for(int i = 0; i < a.length; i++){ 
     a[i] = Double.parseDouble(split[i+1]); //get the double value of the String 
    } 
    return a; 
} 

希望這會有所幫助。我仍然強烈推薦閱讀Java I/OString教程。

2

你可以玩分裂。首先在文本中找到與「a」(或「b」)匹配的行。然後做這樣的事情:

Array[] first= line.split("("); //first[2] will contain the values 

然後:

Array[] arrayList = first[2].split(","); 

您將有數字的ArrayList中的[]。請小心最後的括號)),因爲他們之後有一個「,」。但這是代碼淨化,這是你的使命。我給了你這個想法。