Autor Tema: Exception in thread main java.util.InputMismatchException eliminar objetos Array  (Leído 4559 veces)

sohats

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Hola gente, soy nuevo por acá y estoy iniciándome en el mundo de la programación, estoy haciendo un pequeño programita que consiste en simular una agenda de contactos, tengo las clases creadas y el menu, al momento de ingresar un contacto este lo hace sin problemas pero cuando quiero eliminar o mostrar los datos que contiene cada objeto del array list me está dando problemas, por ej el metodo mostrar, solamente me muestra el numero y no el nombre y el metodo eliminar arroja un error "Exception in thread "main" java.util.InputMismatchException", agradecería que revisaran lo que llevo hecho y me hagan saber que esta mal.


//clase persona
Código: [Seleccionar]
public class Persona
{
     private String nombre;
     private int numero;

    public Persona()
    {
        nombre = "";
        numero = 0;
    }

    public Persona(String nombre, int numero)
    {
        this.nombre = nombre;
        this.numero = numero;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public String getNombre() {
        return nombre;
    }

    public int getNumero() {
        return numero;
    }
   
   
    public String toString()
    {
       String dato;
       
       dato = "\nNombre: "+getNombre()+
              "\nFono: "+getNumero();
       
       return dato;
                   
    }


//clase lista de contactos, que contiene un arrayList de tipo Persona
Código: [Seleccionar]
import java.util.*;
public class ListaDeContactos
{
     
    ArrayList<Persona> lista = new ArrayList<Persona>();
   
   
    public void agregarContacto(Persona contacto)
    {
        lista.add(contacto);
    }
   
    public void eliminarContacto(String nombre)
    {
       for(int i = 0;i<lista.size();i++)
       {
           if(lista.get(i).getNombre().contains(nombre))
           {
                 lista.remove(i);
           }
       }
    }
   
    public void mostrarContactos()
    {
     
       for(int i = 0; i<lista.size();i++)
       {
           System.out.println("Nombre: "+lista.get(i).getNombre());
           System.out.println("Telefono: "+lista.get(i).getNumero());
       }
    }
   
}

//finalmente la clase principal que contiene mi menu
Código: [Seleccionar]
import java.util.*;
public class Agenda {

   
    public static Scanner scn = new Scanner(System.in);
    public static ListaDeContactos listado = new ListaDeContactos();
   
    public static void main(String[] args)
    {
       int opc;
       
        do{
           
              System.out.println("1.- Agregar contacto");
              System.out.println("2-  Eliminar contacto");
              System.out.println("3.- Mostrar contactos");
              System.out.println("4.- Salir");
              opc = scn.nextInt();
             
              switch(opc)
              {
                  case 1:
                            agregar();
                            break;
                     
                  case 2:
                            eliminar();
                            break;
                     
                  case 3:
                            mostrar();
                            break;
                     
                  case 4:
                            System.out.println("Hasta luego");
             
              }
           
       
       }while(opc!=3);
    }
   
    public static void agregar()
    {
        System.out.println("Ingrese nombre");
        String nombre = scn.nextLine();
        scn.nextLine();
       
        System.out.println("Ingrese numero");
        int numero = scn.nextInt();
       
        Persona cto = new Persona(nombre,numero);
        listado.agregarContacto(cto);
    }
   
   
    public static void eliminar()
    {
        System.out.println("Ingrese nombre a borrar");
        String nombre = scn.nextLine();
       
        listado.eliminarContacto(nombre);
    }
   
    public static void mostrar()
    {
       listado.mostrarContactos();
    }
   
}
« Última modificación: 07 de Octubre 2015, 13:16 por Alex Rodríguez »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Problema con mostrar y eliminar objetos de un arrayList
« Respuesta #1 en: 04 de Octubre 2015, 00:15 »
Hola sohats.

En esta parte del código:

Código: [Seleccionar]
public static void agregar()
    {
        System.out.println("Ingrese nombre");
        String nombre = scn.nextLine();
        scn.nextLine();
       
        System.out.println("Ingrese numero");
        int numero = scn.nextInt();
       
        Persona cto = new Persona(nombre,numero);
        listado.agregarContacto(cto);
    }

deberías colocar esta linea
Código: [Seleccionar]
scn.nextLine();antes de
Código: [Seleccionar]
String nombre = scn.nextLine();
« Última modificación: 04 de Octubre 2015, 00:22 por pedro,, »

 

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".