Autor Tema: Error InputMismatchException Java al correr menu de arrays para clientes código  (Leído 1636 veces)

cxffey

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Código donde se presenta el problema:


Código: [Seleccionar]
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();
}
}
« Última modificación: 17 de Enero 2021, 20:15 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re: Error InputMismatchException al correr este menu de arrays para clientes.
« Respuesta #1 en: 06 de Noviembre 2020, 11:56 »
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:
Citar
public class Mclientest {
   ArrayList<String> listaclientes;

Por cierto, también es recomendable indicar de nuevo la clase el constructor del ArrayList cuando lo inicializamos:

Citar
   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:
Citar
   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.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".