Ejercicios Resueltos con ArrayList en Java


Calcular la suma y la media aritmética de los valores contenidos en un ArrayList.

Programa que lea una serie de valores numéricos enteros desde el teclado y los guarde en un ArrayList de tipo Integer. La lectura de números termina cuando se introduzca el valor -99. Este valor no se guarda en el ArrayList. A continuación el programa mostrará por pantalla el número de valores que se han leído, su suma, su media. Por último se mostrarán todos los valores leídos, indicando cuántos de ellos son mayores que la media.
Vamos a utilizar 3 métodos además del método main para resolverlo:
Método leerValores(): pide por teclado los números y los almacena en el ArrayList. La lectura acaba cuando se introduce el valor -99. El método devuelve mediante return el ArrayList con los valores introducidos.
Método calcularSuma(): Recibe como parámetro el ArrayList con los valores numéricos y calcula y devuelve su suma. En este método se utiliza un Iterator para recorrer el ArrayList.
Método mostrarResultados(): Recibe como parámetro el ArrayList, la suma y la media aritmética. Muestra por pantalla todos los valores, su suma y su media y calcula y muestra cuantos números son superiores a la media. En este método se utiliza un for para colecciones para recorrer el ArrayList.

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

public class Main {

   public static void main(String[] args) {
         ArrayList<Integer> array = leerValores();
         double suma = calcularSuma(array);
         double media = suma / array.size();
         mostrarResultados(array, suma, media);
   }

   //pedir por teclado los valores y guardarlos en el ArrayList
   //la lectura acaba cuando se introduzca -99
   public static ArrayList<Integer> leerValores() {
        ArrayList<Integer> valores = new ArrayList();
        Scanner sc = new Scanner(System.in);
        int n;
        System.out.print("Introduce entero. -99 para acabar: ");
        n = sc.nextInt();
        while (n != -99) {
                 valores.add(n);
                 System.out.print("Introduce entero. -99 para acabar: ");
                 n = sc.nextInt();
        }
        return valores;
   }

   //recorrer el ArrayList y sumar todos sus elementos
   public static double calcularSuma(ArrayList<Integer> valores) {
         double suma = 0;
         Iterator it = valores.iterator();
         while (it.hasNext()) {
                  suma = suma + (Integer) it.next();
                 //next() devuelve un dato de tipo Object. Hay que convertirlo a Integer
         }
         return suma;
   }

   //Mostrar valores, su suma y su media aritmética
   //y cuántos hay superiores a la media
   public static void mostrarResultados(ArrayList<Integer> valores, double suma, double media) {
         int cont = 0;
         System.out.println("Valores introducidos: ");
         System.out.println(valores);
         System.out.println("Suma: " + suma);
         System.out.printf("Media: %.2f %n", media);
         for (Integer i : valores) {
               if (i > media) {
                  cont++;
              }
         }
      System.out.println(cont + " valores superiores a la media");
   }
}

1 comentario:

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

    ArrayList array = leerValores();
    calcularSuma(array);

    }

    private static void calcularSuma(ArrayList array) {
    // TODO Auto-generated method stub
    int suma=0;
    for (int i = 0; i < array.size(); i++) {
    suma = suma + array.get(i);
    }
    System.out.println("la suma total es igual a "+suma);
    System.out.println("Su media es igual a "+(suma/array.size()));

    }

    private static ArrayList leerValores() {
    // TODO Auto-generated method stub
    ArrayList listMedia = new ArrayList();
    int numero;
    int i=0;
    do {

    numero=Integer.parseInt(JOptionPane.showInputDialog("Introduzca el numero"));
    listMedia.add(numero);

    if (listMedia.get(i)==-99) {
    listMedia.remove(listMedia.get(i));
    }else {
    System.out.println(listMedia.get(i));
    i++;
    }
    } while (numero!=-99);

    return listMedia;
    }

    ResponderEliminar