Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: cxffey en 06 de Noviembre 2020, 08:29
-
Código donde se presenta el problema:
package mclientest;
import java.util.ArrayList;
import java.util.Scanner;
public class Mclientest {
ArrayList<Double> listaclientes;
public void leerOpcion() {
Scanner teclado = new Scanner(System.in);
int opcion;
do {
System.out.println("********************************");
System.out.println("******[1] Agregar Clientes ******");
System.out.println("******[2] Buscar Clientes ******");
System.out.println("******[3] Modificar Clientes******");
System.out.println("******[4] Eliminar Clientes ******");
System.out.println("******[5] Insertar Clientes ******");
System.out.println("******[6] Mostrar Clientes ******");
System.out.println("******[7] Salir ******");
System.out.println("********************************");
System.out.print("Ingrese la opción a utilizar: ");
opcion = teclado.nextInt();
switch (opcion) {
case 1:
ingresarCliente();
break;
case 2:
buscarCliente();
break;
case 3:
modificarCliente();
break;
case 4:
eliminarCliente();
break;
case 5:
insertarCliente();
break;
case 6:
mostrarClientes();
break;
case 7:
}
} while (opcion != 7);
}
public void ingresarCliente() {
Scanner teclado = new Scanner(System.in);
double cliente;
System.out.print("Ingrese Cliente: ");
cliente = teclado.nextDouble();
listaclientes.add(cliente);
}
public void buscarCliente() {
Scanner teclado = new Scanner(System.in);
double cliente;
int indice;
System.out.print("Cliente a buscar: ");
cliente = teclado.nextDouble();
indice = listaclientes.indexOf(cliente);
if (indice != -1) {
System.out.println("El cliente es el numero: "+ indice);
} else {
System.out.println("Cliente no existe: ");
}
}
public void modificarCliente() {
Scanner teclado = new Scanner(System.in);
double cliente, nuevoCliente;
int indice;
System.out.print("Cliente a modificar: ");
cliente = teclado.nextDouble();
indice = listaclientes.indexOf(cliente);
if (indice != -1) {
System.out.print("Nuevo cliente: ");
nuevoCliente = teclado.nextDouble();
listaclientes.set(indice, nuevoCliente);
} else {
System.out.println("Dato no se encuentra: ");
}
}
public void eliminarCliente() {
Scanner entrada = new Scanner(System.in);
double cliente;
int indice;
System.out.print("Cliente a eliminar: ");
cliente = entrada.nextDouble();
indice = listaclientes.indexOf(cliente);
if (indice != -1) {
listaclientes.remove(indice);
System.out.println("Cliente Eliminado");
} else {
System.out.print("Dato no se encuentra: ");
}
}
public void insertarCliente() {
Scanner teclado = new Scanner(System.in);
double cliente;
int indice;
System.out.print("Cliente a insertar: ");
cliente = teclado.nextDouble();
System.out.print("Posicion donde desea insertar: ");
indice = teclado.nextInt();
listaclientes.add(indice, cliente);
}
public void mostrarClientes() {
if (!listaclientes.isEmpty()) {
System.out.println("Elementos de la lista:");
for (int i = 0; i < listaclientes.size(); i++) {
System.out.println(listaclientes.get(i));
}
} else {
System.out.println("No existen clientes en la lista");
}
}
public static void main(String[] args) {
Mclientest miLista = new Mclientest();
miLista.listaclientes = new ArrayList();
miLista.leerOpcion();
}
}
-
Hola.
Tu programa funciona, pero creo que lo que te ocurre es que has escogido mal la clase con la que inicializas el ArrayList.
Tú has creado un ArrayList con la clase Double, que es una clase para trabajar con valores numéricos reales, pero el programa consiste en trabajar con "clientes".
Supongo que para los clientes introduces un nombre, que se debe guardar como String. Desde luego no se puede guardar como Double, por eso te sale la excepción InputMismatch.
Esta excepción indica que el programa está esperando que se le den datos numéricos por teclado, pero está recibiendo cadenas String y entonces no sabe que hacer con ellas.
Así que hay que cambiar la clase del ArrayList:
public class Mclientest {
ArrayList<String> listaclientes;
Por cierto, también es recomendable indicar de nuevo la clase el constructor del ArrayList cuando lo inicializamos:
public static void main(String[] args) {
Mclientest miLista = new Mclientest();
miLista.listaclientes = new ArrayList<String>();
miLista.leerOpcion();
}
Luego hay que corregir los métodos para que pida y trabaje con String, no Double.
Por ejemplo:
public void ingresarCliente() {
Scanner teclado = new Scanner(System.in);
String cliente;
System.out.print("Ingrese Cliente: ");
cliente = teclado.nextLine();
listaclientes.add(cliente);
}
Tras hacer todas las correcciones en cada método, el programa funciona perfectamente.
Es decir, tu programa está bien. Solo has errado al escoger la clase del ArrayList. Si vamos a trabajar con nombres de clientes, hay que usar String, no Double.