Hola.
Necesitas dos ArrayList, uno para clase String donde guardar los nombres de clientes. Otro para clase Integer (o Double) donde guardan las compras.
Los clientes y sus compras quedan relacionados según la posición que ocupan en los ArrayList.
Es decir, si un cliente ocupa la posición número 4 en su ArrayList de String, pues sus compras estarán en la posición 4 del ArrayList de Integer.
Teniendo en cuenta esta relación, podemos cumplir las funcionalidades que se nos piden.
Mira, este podría ser el "esqueleto" del programa.
- Los dos ArrayList y un Scanner para recibir datos por consola.
- Un menú de opciones donde, con un switch, analizamos qué ha elegido el usuario y llamaremos al método que se ocupará de cumplir esa función
- Y los cuatro métodos para dichas funcionalidades.
import java.util.ArrayList;
import java.util.Scanner;
public class RegistroCompras {
private static ArrayList<String> clientes = new ArrayList<String>();
private static ArrayList<Integer> compras = new ArrayList<Integer>();
private static Scanner teclado = new Scanner(System.in);
public static void main(String[] args) {
int opcion = 0;
do {
System.out.println("\n\n\t\tREGISTRO DE COMPRAS");
System.out.println("\t\t-------- -- -------\n");
System.out.println("[1] - Registrar cliente y su compra");
System.out.println("[2] - Listar clientes y sus compras");
System.out.println("[3] - Consultar la compra de un cliente");
System.out.println("[4] - Eliminar un cliente");
System.out.println("[9] - FIN DE PROGRAMA");
System.out.print("Opcion: ");
opcion = Integer.parseInt(teclado.nextLine());
switch(opcion) {
case 1:
registrarCliente();
break;
case 2:
mostrarListado();
break;
case 3:
buscarCliente();
break;
case 4:
eliminarCliente();
break;
case 9:
System.out.println("\n\t\tFIN DE PROGRAMA");
break;
default:
System.out.println("Opcion equivocada");
}
}while(opcion != 9);
}
private static void registrarCliente( ) {
}
private static void mostrarListado() {
}
private static void buscarCliente() {
}
private static void eliminarCliente() {
}
}
Falta el código de los métodos, que es lo que realmente importa.
Bien, vamos a escribir el primer método, que es muy sencillo, es pedir un nombre y un valor de compra, y guardarlos en los correspondientes ArrayList:
private static void registrarCliente( ) {
System.out.print("\nNombre Cliente: ");
clientes.add(teclado.nextLine());
System.out.print("Valor de compra: ");
compras.add(Integer.parseInt(teclado.nextLine()));
}
Listo, solo se necesitan esas 4 líneas. No tiene ningún misterio.
Vamos a ver otro método más interesante, el de buscar un cliente y mostrar su compra.
Aquí si que tenemos que poner en práctica la forma de relacionar un dato con el otro.
Pediremos el nombre de un cliente, lo buscaremos en el ArrayList para conocer que posición ocupa.
Sabiendo esa posición, podremos encontrar el valor de su compra en el otro ArrayList:
private static void buscarCliente() {
if (clientes.isEmpty())
System.out.println("\nNo hay clientes registrados");
else {
System.out.print("\nNombre Cliente: ");
int posicion = clientes.indexOf(teclado.nextLine());
if (posicion == -1)
System.out.println("No hay cliente con ese nombre");
else
System.out.println("Valor de compra: " + compras.get(posicion));
}
}
Como ves, tampoco se requiere un código complicado.
La clave es obtener la posición del cliente, esto nos los da el propio ArrayList invocando a su método indexOf().
Si el nombre que damos para buscar no existe, nos retorna el valor -1.
Si existe, entonces si obtendremos la posición que nos sirve para encontrar la compra que le corresponde a dicho cliente.
Intenta tú completar los otros dos métodos que faltan.
Si te atascas o algo no entiendes, pregunta por aquí.
Un saludo.