import java.util.Scanner;
/**
* @author andreas
*
*/
public class PromedioApp {
//Metodo que calcula el promedio de varios numeros hasta que el usuario
//Introduce -1
public static double bucle(final Scanner scanner) {
//Indica la finalizacion del bucle
final double TERMINAR = -1d;
//Suma de los numeros introducidos
double suma = 0d;
//Numero introducido
double numero = 0d;
//cantidad de numeros introducidos
int cantidad = 0;
//Numero como string
String numeroStr = null;
//Indica al usuario lo que tiene que hacer
System.out.println("Introduce n\u00FAmeros, -1 para terminar");
//Mientra el usuario no introduzca -1
while (TERMINAR != numero) {
//Obtener el numero como string
numeroStr = scanner.next();
//try-catch, evita errores por parseo (el usuario no introduce numeros)
try {
//Trata de convertir la cadena a numero (double)
numero = Double.valueOf(numeroStr);
//Si el usuario introduce -1, pasar a la siguiente iteracion
if(TERMINAR == numero) {
continue;
}
//incrementar la cantidad de numeros
cantidad++;
//incrementar la suma
suma += numero;
}catch(Exception e) {
//Introdujo mal el numero, it is OK
numero = 0d;
}
}
//Retornar el promedio
return suma/cantidad;
}
public static void main(String[] args) {
//scanner de texto
Scanner scanner = null;
//Por si algo sale mal try-catch
try {
//El scanner se inicia para leer del teclado
scanner = new Scanner(System.in);
//se calcula el promedio invocando a la funcion bucle
double promedio = bucle(scanner);
//Impresion del mensaje
System.out.println("El promedio es "+promedio);
}catch(Exception e) {
//Muy mal !!!
e.printStackTrace();
}finally {
//Pase lo qeu pase cerrar el scanner
if(null != scanner) {
scanner.close();
}
}
}
}