2011-05-11 23 views
6

Java'ya yeni geliyorum. Aşağıdaki içeriğe sahip bir metin dosyası var.Java, metin dosyasından değerleri okundu

 
`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)) 
) 
) 

Şimdi ise istediğim, iki farklı dizi listesi olarak "a" ve "b" almak gerekir.

+4

"iki farklı" olarak mı? Ne istediğini daha açık bir şekilde açıklamaya çalışmalısın. Belki bu arada [Java I/O eğitimi] (http://download.oracle.com/javase/tutorial/essential/io/) sizin için yararlı olabilir. –

+1

iki farklı ... liste? :) –

+0

Lütfen, daha spesifik olun. A nedir ve b nedir? –

cevap

7

Dosya satırını satır satırında okumalısınız. Böyle bir BufferedReader ile yapılır:

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()); 
} 

senin "a" ve "b" dosyanın dördüncü ve beşinci hattı üzerinde varsayarsak, double bir dizi döndürür bu çizgiler karşılandığı bir yöntemi çağırmanız gerekir : Bu yardımcı olur

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

Umut. Java I/O ve String eğitimlerini okumanızı şiddetle tavsiye ediyorum.

2

Split ile oynayabilirsiniz. İlk olarak, metinde "a" (veya "b") ile eşleşen satırı bulun.

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

Sonra:

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

Bunu [] ArrayList numaralarına sahip olacak Sonra böyle bir şey yapmak. Son parantez ile dikkatli olun)), çünkü hemen sonra bir "," var. Ama bu kod dağıtma ve senin görevin. Sana fikri verdim.

İlgili konular