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