2011-05-11 14 views
6

Soy nuevo en Java. Tengo un archivo de texto con el siguiente contenido.Valores de lectura de Java desde el archivo de texto

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

Ahora lo que quiero es, necesito obtener "a" y "b" como dos listas de matrices diferentes.

+4

"como dos diferentes"? Debes tratar de explicar más claramente lo que quieres. Tal vez, mientras tanto, el [tutorial de E/S de Java] (http://download.oracle.com/javase/tutorial/essential/io/) puede ser útil para usted. –

+1

dos diferentes ... listas? :) –

+0

Por favor, sé más específico. ¿Qué es a y qué es b? –

Respuesta

7

Necesita leer el archivo línea por línea. Se realiza con un BufferedReader así:

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

Asumiendo que su "a" y "b" están en la línea de cuarto y quinto del archivo, es necesario llamar a un método cuando se cumplen estas líneas que devolver una matriz de 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; 
} 

Espero que esto ayude. Aún así, recomiendo leer los tutoriales Java I/O y String.

2

Puedes jugar con split. Primero encuentre la línea en el texto que coincida con "a" (o "b"). A continuación, hacer algo como esto:

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

a continuación:

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

Va a tener los números en arrayList []. Tenga cuidado con los corchetes finales)), porque tienen un "," justo después. Pero eso es depuración del código y es tu misión. Te di la idea.

Cuestiones relacionadas