Las estructuras dinámicas de datos como ArrayList
en Java son fundamentales para gestionar colecciones de datos de tamaño variable. A continuación, te presento una serie de ejercicios que te ayudarán a mejorar tus habilidades en el uso de ArrayList
en Java.
Ejercicio 1: Gestión de Números
Crea un programa que permita al usuario ingresar una serie de números enteros en un ArrayList
, calcular la suma, el promedio, el valor máximo y el valor mínimo de los números ingresados.
import java.util.ArrayList;
import java.util.Scanner;
public class GestionNumeros {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> numeros = new ArrayList<>();
int suma = 0;
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
System.out.println("Ingrese números enteros (ingrese un número negativo para terminar):");
while (true) {
int num = scanner.nextInt();
if (num < 0) break;
numeros.add(num);
suma += num;
if (num > max) max = num;
if (num < min) min = num;
}
if (numeros.size() > 0) {
double promedio = (double) suma / numeros.size();
System.out.println("Suma: " + suma);
System.out.println("Promedio: " + promedio);
System.out.println("Valor máximo: " + max);
System.out.println("Valor mínimo: " + min);
} else {
System.out.println("No se ingresaron números.");
}
scanner.close();
}
}
Ejercicio 2: Gestión de Cadenas
Escribe un programa que permita al usuario ingresar una serie de cadenas de texto en un ArrayList
. Luego, el programa debe mostrar las cadenas ingresadas en orden inverso.
import java.util.ArrayList;
import java.util.Scanner;
public class GestionCadenas {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<String> cadenas = new ArrayList<>();
System.out.println("Ingrese cadenas de texto (ingrese 'fin' para terminar):");
while (true) {
String cadena = scanner.nextLine();
if (cadena.equals("fin")) break;
cadenas.add(cadena);
}
System.out.println("Cadenas ingresadas en orden inverso:");
for (int i = cadenas.size() - 1; i >= 0; i--) {
System.out.println(cadenas.get(i));
}
scanner.close();
}
}
Ejercicio 3: Gestión de Estudiantes
Crea una clase Estudiante
con atributos nombre
y nota
. Escribe un programa que permita ingresar varios estudiantes en un ArrayList
, y luego mostrar la lista de estudiantes ordenada por nota de manera descendente.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
class Estudiante {
private String nombre;
private double nota;
public Estudiante(String nombre, double nota) {
this.nombre = nombre;
this.nota = nota;
}
public String getNombre() {
return nombre;
}
public double getNota() {
return nota;
}
@Override
public String toString() {
return "Estudiante [Nombre: " + nombre + ", Nota: " + nota + "]";
}
}
public class GestionEstudiantes {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Estudiante> estudiantes = new ArrayList<>();
System.out.println("Ingrese los estudiantes (ingrese 'fin' como nombre para terminar):");
while (true) {
System.out.print("Nombre: ");
String nombre = scanner.nextLine();
if (nombre.equals("fin")) break;
System.out.print("Nota: ");
double nota = scanner.nextDouble();
scanner.nextLine(); // Consumir el salto de línea
estudiantes.add(new Estudiante(nombre, nota));
}
Collections.sort(estudiantes, Comparator.comparingDouble(Estudiante::getNota).reversed());
System.out.println("Lista de estudiantes ordenada por nota descendente:");
for (Estudiante estudiante : estudiantes) {
System.out.println(estudiante);
}
scanner.close();
}
}
Ejercicio 4: Gestión de Productos
Crea una clase Producto
con atributos nombre
y precio
. Escribe un programa que permita agregar productos a un ArrayList
, buscar un producto por su nombre y eliminar un producto por su nombre.
import java.util.ArrayList;
import java.util.Scanner;
class Producto {
private String nombre;
private double precio;
public Producto(String nombre, double precio) {
this.nombre = nombre;
this.precio = precio;
}
public String getNombre() {
return nombre;
}
public double getPrecio() {
return precio;
}
@Override
public String toString() {
return "Producto [Nombre: " + nombre + ", Precio: " + precio + "]";
}
}
public class GestionProductos {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Producto> productos = new ArrayList<>();
while (true) {
System.out.println("1. Añadir producto");
System.out.println("2. Buscar producto");
System.out.println("3. Eliminar producto");
System.out.println("4. Listar productos");
System.out.println("5. Salir");
System.out.print("Seleccione una opción: ");
int opcion = scanner.nextInt();
scanner.nextLine(); // Consumir el salto de línea
switch (opcion) {
case 1:
añadirProducto(scanner, productos);
break;
case 2:
buscarProducto(scanner, productos);
break;
case 3:
eliminarProducto(scanner, productos);
break;
case 4:
listarProductos(productos);
break;
case 5:
System.out.println("Saliendo del programa.");
scanner.close();
return;
default:
System.out.println("Opción no válida.");
}
}
}
private static void añadirProducto(Scanner scanner, ArrayList<Producto> productos) {
System.out.print("Nombre del producto: ");
String nombre = scanner.nextLine();
System.out.print("Precio del producto: ");
double precio = scanner.nextDouble();
scanner.nextLine(); // Consumir el salto de línea
productos.add(new Producto(nombre, precio));
System.out.println("Producto añadido exitosamente.");
}
private static void buscarProducto(Scanner scanner, ArrayList<Producto> productos) {
System.out.print("Ingrese el nombre del producto a buscar: ");
String nombre = scanner.nextLine();
for (Producto producto : productos) {
if (producto.getNombre().equalsIgnoreCase(nombre)) {
System.out.println("Producto encontrado: " + producto);
return;
}
}
System.out.println("Producto no encontrado.");
}
private static void eliminarProducto(Scanner scanner, ArrayList<Producto> productos) {
System.out.print("Ingrese el nombre del producto a eliminar: ");
String nombre = scanner.nextLine();
for (Producto producto : productos) {
if (producto.getNombre().equalsIgnoreCase(nombre)) {
productos.remove(producto);
System.out.println("Producto eliminado exitosamente.");
return;
}
}
System.out.println("Producto no encontrado.");
}
private static void listarProductos(ArrayList<Producto> productos) {
if (productos.isEmpty()) {
System.out.println("No hay productos para mostrar.");
} else {
for (Producto producto : productos) {
System.out.println(producto);
}
}
}
}
Conclusión
Estos ejercicios te proporcionarán una base sólida para trabajar con ArrayList
en Java. Practicar estos conceptos es esencial para desarrollar tus habilidades de programación y te permitirá abordar problemas más complejos en el futuro. ¡Sigue practicando y explorando más sobre Java para convertirte en un programador más competente!
… … …
¡Coméntanos que te ha parecido este artículo al final de la página!
TÚ OPINIÓN IMPORTA
NUESTRAS ÚLTIMAS PUBLICACIONES
- La vida nos aguarda triunfos importantes. Sé resiliente.
- Creación de una Calculadora de Ecuación de Segundo Grado con HTML, CSS y JavaScript
- Comunicado a nuestros amigos, alumnos y compañeros de Valencia.
- Artículo: Funciones esenciales de C para la manipulación de cadenas: fgets, strlen, stdin, y más
- Uso de la Clase DAO sin Interfaces en Java: Ejemplo de Gestión de Trabajadores
- Uso de DAO en Java: Simplificando el Acceso a Datos con el Patrón DAO
- Guía Completa para la Creación de Gramáticas en JFLAP: Ejercicios y Soluciones
- Generación de Lenguajes en JFLAP con Gramáticas: Ejercicios y Estrategias
- Máquinas de Turing y Enumeración de Números Binarios: Diseño y Funcionamiento en JFLAP
Contenido restringido
Comments are closed