// Programa 7

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class ejemplo07LeerArchivo {
    public static void main(String[] args) {
        if (args.length < 1) {
            System.out.println("Falta el nombre del fichero");
            return;
        }
        
        // Crear un ArrayList para almacenar los pares de valores
        ArrayList<double[]> datos = new ArrayList<>();

        try {
            BufferedReader br = new BufferedReader(new FileReader(args[0]));
            
            String linea;
            int     numLineas = 0;
            // Acumulado para calcular la media de la primera columna.
            double acumulado = 0;

            // Leer el archivo linea a linea
            while ((linea = br.readLine()) != null) {
                // Dividir la linea en columnas usando el espacio como delimitador
                String[] columnas = linea.split(" ");

                // Array donde meter los tres valores de la linea
                // Cada vez que pasemos por aqui la variable valores es un nuevo array resultado del new
                double[] valores = new double[3];
                
                // Asegurarse de que hay exactamente 3 columnas
                if (columnas.length == 3) {
                    // Rellenar el array con los valores
                    valores[0] = Double.parseDouble(columnas[0]);
                    valores[1] = Double.parseDouble(columnas[1]);
                    valores[2] = Double.parseDouble(columnas[2]);

                    // Incluir el array en el ArrayList
                    datos.add(valores);
                    
                    acumulado += valores[0];
                    numLineas++;
                } else {
                    System.out.println("Linea ignorada: " + linea);
                }
            }
            
            br.close();
            
            double media = acumulado/numLineas;
            // Buscamos la primera linea que exceda la media en la primera columna, sin volver a leer el fichero
            for (double[] trio : datos) {
                if (trio[0] > media) {
                    System.out.println("La media era: " + media + " y la primera linea contiene: " + trio[0] + " " + trio[1] + " " + trio[2]);
                    break;
                }
            }

        } catch (IOException e) {
            System.out.println("Error aqui:");
            e.printStackTrace(); // Manejo de excepciones
        }

    }
}
