import java.io.*;
public class Stats {
public static boolean hayFichero=false;
public static String nombreFichero=null;
public static void main(String[] args) {
// interpreta las opciones y si no son correctas acaba
if ( parse(args)==false ) {
return;
}
// prepara un buffered reader para leer del fichero o de la entrada
BufferedReader entrada=null;
if ( hayFichero ) {
try {
entrada = new BufferedReader(new FileReader(nombreFichero));
} catch (FileNotFoundException e) {
System.out.printf("No puedo abrir el fichero [%s]\n",nombreFichero);
System.exit(-1);
}
} else {
entrada = new BufferedReader(new InputStreamReader(System.in));
}
// lee cada linea haciendo la media
String linea;
float valor;
double valorAcumulado=0.0;
int nLineas=0;
try {
linea=entrada.readLine();
while (linea!=null) {
try {
valor=Float.parseFloat(linea);
valorAcumulado+=valor;
nLineas+=1;
} catch (NumberFormatException e) {
}
linea=entrada.readLine();
}
} catch(IOException e) {
}
// al final imprimimos la media
double media=valorAcumulado/nLineas;
System.out.printf("media: %.3f\n",media);
}
// Interpreta las opciones de la linea de comandos
// y deja en las variables los valores correspondientes
// devuelve:
// true si con esas opciones podemos seguir
// false si con esas opciones hay que salir
public static boolean parse(String[] args) {
boolean resultado=true;
int i;
if ( args.length>1 ) {
System.out.printf("Demasiadas opciones\n");
resultado=false;
} else if ( args.length==0 ) {
resultado=true;
hayFichero=false;
} else {
if ( args[0].equals("-h") ) {
resultado=false;
} else {
nombreFichero=args[0];
hayFichero=true;
}
}
if ( !resultado ) {
System.out.printf("Uso: java Stats [-h] []\n");
}
return resultado;
}
}