Vamos a escribir un programa que crea un ArrayList de objetos de tipo Persona. El programa pedirá por teclado los datos sobre las personas y lo guardará en array. Posteriormente mostrará por pantalla lo siguiente:
- Todas las personas
- Todas las personas ordenadas de menor a mayor altura
Primero crearemos la clase Persona:
package ArrayListObjetos; public class Persona { private String nombre; private String colorOjos; private int altura; public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getColorOjos() { return colorOjos; } public void setColorOjos(String colorOjos) { this.colorOjos = colorOjos; } public int getAltura() { return altura; } public void setAltura(int altura) { this.altura = altura; } @Override //Sobreescibimos un método, ya lo veremos más adelante public String toString(){ StringBuilder sb = new StringBuilder(); sb.append("\nNombre"); sb.append(nombre); sb.append("\nColorOjos"); sb.append(colorOjos); sb.append("\nAltura"); sb.append(altura); return sb.toString(); } }
A continuación, la clase principal de nuestro proyecto:
package ArrayListObjetos; import java.util.*; public class Main { //Creamos un ArrayList para guardar objetos de tipo Persona static ArrayList<Persona> personas = new ArrayList<Persona>(); static Scanner sc = new Scanner(System.in); //método main public static void main(String[] args) { leerPersonas(); System.out.println("\nPersonas Introducidas:"); mostrarPersonas(); System.out.println("\nPersonas de menor a mayor altura"); mostrarPorAltura(); } public static void leerPersonas(){ String nombre; String colorOjos; int altura; Persona aux; int i, N; do{ System.out.println("Número de personas? "); N = sc.nextInt(); }while(N < 0); sc.nextLine(); //Limpiamos el buffer de entrada //lectura de N personas for(i=1;i<=N;i++){ System.out.println("Persona " + i); nombre = sc.nextLine(); System.out.println("Color de ojos: "); colorOjos = sc.nextLine(); System.out.println("Altura en cm: "); altura = sc.nextInt(); sc.nextLine(); //Limpiamos el buffer de entrada aux = new Persona(); //Se crea el objeto Persona //Se asignan valores a los atributos del nuevo objeto aux.setNombre(nombre); aux.setAltura(altura); //Se añade el objeto al final del array personas.add(aux); } } //Método para mostrar todas las personas public static void mostrarPersonas(){ for(int i=0;i<personas.size();i++){ System.out.println(personas.get(i)); //Se invoca el método toString de la clase Persona } } //Método que ordena de menor a mayor altura las personas public static void mostrarPorAltura(){ int i,j; Persona aux; for(i=0;i<personas.size()-1;i++){ for(j=0;j<personas.size()-i-1;j++){ if(personas.get(i+1).getAltura() < personas.get(j).getAltura()){ aux = new Persona(); personas.set(j+1, personas.get(j)); personas.set(j, aux); } mostrarPersonas(); } } } }
Solución al ejercicio anterior:
package ArrayList; import java.util.Scanner; import java.util.ArrayList; import java.util.Iterator; //Estas tres importaciones se pueden resumir poniedo import java.util.*; public class Main { public static void main(String args[]){ Scanner sc = new Scanner(System.in); ArrayList<Integer> numeros = new ArrayList<Integer>(); int n; do{ System.out.println("Introduce número enteros. Introduce 0 para acabar"); System.out.println("Número: "); n = sc.nextInt(); if(n != 0){ numeros.add(n); } }while(n != 0); System.out.println("Ha introducido: " + numeros.size() + " números"); //Mostramos el ArrayList completo System.out.println(numeros); //Recorrido usando un Iterator Iterator it = numeros.iterator(); while(it.hasNext()){ System.out.println(it.next()); } //Recorrido usando foreach para sumar los elementos double suma = 0; for(int i : numeros){ //Tambíen podemos poner int i, pero es más recomendable poner Integer //que es el nombre de la clase de los enteros suma += i; //Es lo mismo que poner suma = suma + i } System.out.println("Suma: " + suma); System.out.println("Media: " + suma/numeros.size()); } }
No hay comentarios:
Publicar un comentario