Ejemplo de ArrayList en Java

Ejemplo de uso de un ArrayList: Calcular la altura media de los alumnos de una clase
Programa Java que pida por teclado las alturas de N alumnos de una clase y las guarde en un ArrayList de tipo Double. A continuación el programa calculará la altura media de todos los alumnos, cuantos alumnos hay más altos que la media y cuantos más bajos.
Para resolverlo vamos a utilizar 4 métodos además del método main:
Método numeroAlumnos(): este método pide por teclado el número de alumnos de la clase y devuelve dicho número al programa principal.
Método leerAlturas(): pide por teclado las alturas de los N alumnos y las almacena en el ArrayList. Este método recibe como parámetros el ArrayList inicialmente vacío y el número de alumnos a leer.
Método calcularMedias(): calcula y devuelve la media de los alumnos de la clase. Este método recibe como parámetro el ArrayList con las alturas de todos los alumnos.
Método mostrarResultados(): muestra por pantalla todas las alturas y calcula y muestra el número de alumnos con altura superior e inferior a la media. Recibe como parámetros el ArrayList con las alturas de todos los alumnos y la media calculada anteriormente.
Solución:
import java.util.ArrayList;
import java.util.Scanner;

public class Main {

   public static void main(String[] args) {
      //creamos el ArrayList que contendrá la altura de los alumnos
      ArrayList<Double> altura = new ArrayList<>();
      int N;
      double media;
      //obtenemos el número de alumnos de la clase
      N = numeroAlumnos();
      //leemos la altura de los N alumnos
      leerAlturas(altura, N);
      //calculamos la media
      media = calcularMedia(altura);
      //mostramos los resultados
      mostrarResultados(altura, media);
   }

   //Método para pedir por teclado el número de alumnos de la clase
   public static int numeroAlumnos() {
      Scanner sc = new Scanner(System.in);
      int n;
      do {
            System.out.print("Introduce número de alumnos: ");
            n = sc.nextInt();
      } while (n < 1);
      return n;
   }

   //Este método recibe el ArrayList y el número de alumnos de la clase
   //Pide por teclado la altura de todos los alumnos y las guarda en el ArrayList
   public static void leerAlturas(ArrayList<Double> a, int n) {
      Scanner sc = new Scanner(System.in);
      int i;
      double alto;
      for (i = 1; i <= n; i++) {
           do {
                 System.out.print("Alumno " + i + " altura: ");
                 alto = sc.nextDouble();
           } while (alto <= 0);
           a.add(alto); //añade la altura al final del ArrayList
      }
  }

   //Este método recibe el ArrayList con todas las alturas
   //calcula y devuelve la media
   public static double calcularMedia(ArrayList<Double> a) {
      double media = 0;
      for (Double d : a) {
            media = media + d;
      }
      return media / a.size();
   }

   //Muestra la altura de todos los alumnos, la media y calcula y muestra
   //cuantos alumnos hay con altura superior a la media
   //y cuántos con altura inferior
   public static void mostrarResultados(ArrayList<Double> a, double media) {                                
      int superior = 0, inferior = 0;
      System.out.println("alturas introducidas: ");
      System.out.println(a);
      for (Double d : a) {
            if (d > media)
                superior++;
            else if (d < media)
                       inferior++;
      }
      System.out.printf("Media: %.2f %n", media);
      System.out.println("Hay " + superior + " alumnos más altos que la media");
      System.out.println("Hay " + inferior + " alumnos más bajos que la media");
   }
}

8 comentarios:

  1. public static void main(String[] args) {
    // TODO Auto-generated method stub

    int N =numeroAlumnos();
    System.out.println("Se ingresaron "+N+" Alumnos");
    ArrayList altAlum = new ArrayList(N);
    leerAlturas(altAlum, N);
    System.out.println(calcularMedias(altAlum));
    }

    private static double calcularMedias(ArrayList altAlum) {
    // TODO Auto-generated method stub
    double media = 0;
    for (Double d : altAlum) {
    media = media + d;
    }
    return media / altAlum.size();
    }

    private static void leerAlturas(ArrayList altAlum, int n) {
    // TODO Auto-generated method stub

    for (int i = 0; i < n; i++) {
    double alto = Double.parseDouble(JOptionPane.showInputDialog("Introduzca la altura del alumno"));
    altAlum.add(alto);
    }
    }

    private static int numeroAlumnos() {
    // TODO Auto-generated method stub
    int numAlum=Integer.parseInt(JOptionPane.showInputDialog("Ingrese numero de alumnos a medir"));
    return numAlum;
    }

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Porqué los metodos son STATIC?

    ResponderEliminar
    Respuestas
    1. Los métodos pueden ser static o final, los static se dan cuando otro método que los va a instanciar (utilizar) son tambien de tipo static, por ejemplo el método main. El método main no puede ser instanciado.

      Eliminar
  4. no entiendo lo de while(n < 1) y while(alto<=0) no entiendo porque los pones alguien podria responder porfa

    ResponderEliminar
    Respuestas
    1. A lo que yo entendí el primer while es para validar de que el usuario ingrese una cantidad de alumnos valida (que no sea 0 o menor que 0). Y el segundo while es para lo mismo, son simples validaciones.

      Eliminar
  5. Implementar un programa Java para una entidad o empresa dedicada al rubro de la nutrición. La
    empresa maneja la información de las personas de acuerdo a los siguientes datos: nombre,
    edad, CI, sexo (H hombre, M mujer), peso y altura. Sin embargo, hace una diferencia entre sus
    pacientes y los médicos. De los pacientes administra la siguiente información: fecha de la
    primera consulta, su médico de tratamiento, especialidad del médico que lo trata. De los
    médicos además de la información pertinente registra la especialidad, así como el precio de la
    consulta. Resuelva este problema con las siguientes consideraciones:
     Desarrollar el diagrama de clases correspondiente, tomando en cuenta miembros
    atributo, así como métodos(incluidos métodos constructores).

    Ingresar por teclado el nombre, CI, edad, sexo, peso, estatura, fecha de primera
    consulta,
    medico, precio de consulta y especialidad.
     Calcular el ICM de un paciente para saber si se encuentra en su peso ideal
     ICM ൌ ௉௘௦௢
    ா௦௧௔௧௨௥௔మ

     peso en kg y estatura en metros

    Indicar si es mayor de edad.
     Reportar información del sujeto.
    Indicar las tres personas con mayor de edad.

    ResponderEliminar
  6. package ArraysList;

    import java.math.BigDecimal;
    import java.math.RoundingMode;
    import java.util.ArrayList;
    import java.util.Scanner;

    public class Calcula_Estatura {
    private static BigDecimal decimal;
    private static int numAlumnos;
    private static double altura;
    private static double valor;
    private static double resultadoSumas;
    private static int tamaño;
    private static double media;
    private static BigDecimal resultado;
    private static ArrayList AlturaAlumnos = new ArrayList ();
    private static int superior, inferior;
    public static void main(String[] args) {
    numeroAlumnos();
    leerAlturas();
    CalcularMedias();
    mostrarResultados();
    }

    public static int numeroAlumnos() {
    System.out.println("Por favor introduce el rango de alumnos");
    Scanner entrada = new Scanner(System.in);
    numAlumnos = entrada.nextInt();
    return numAlumnos;
    }

    public static void leerAlturas() {
    for(int i = 0; i{
    System.out.println(elemento);
    if(resultado.doubleValue()>elemento) {
    inferior ++;
    }else {
    superior++;
    }
    });
    System.out.println("-----------------------");

    System.out.println("Hay : " + inferior + " Inferiores a la media ");
    System.out.println("Hay : " + superior + " Superior a la media ");

    }

    }

    ResponderEliminar