Java - Problema al utilizar la función Scanner

 
Vista:
sin imagen de perfil
Val: 21
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Problema al utilizar la función Scanner

Publicado por Jose_Romero (10 intervenciones) el 11/11/2018 13:19:08
Buenas tardes, estoy teniendo un pequeño problema al usar el Scanner. Estoy probando lo siguiente: Tengo un menú que dependiendo del valor introducido por pantalla a través del Scanner hace una cosa u otra, pero mi problema es al llegar al 4. Al pulsar la tecla 4 de mi menú quiero escribir un ID (entero) y un nombre (String) por pantalla y aquí es donde llega mi problema. Yo puedo escribir mi ID, como un entero, pero al mostrarme el mensaje de escribir el nombre me lo salta directamente y no puedo escribirlo, es como si fuera en blanco y no sé porqué.

Adjunto aquí mi pequeño código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public static void inicio() throws SQLException{
    System.out.println("====== MENÚ ======");
    System.out.println("1. Listado de todos los almacenes de la compañía");
    System.out.println("2. Listado de todos los productos de la compañía y el almacén en el que se encuentran");
    System.out.println("3. Listado de usuarios del sistema");
    System.out.println("4. Crear un nuevo almacén");
    System.out.println("5. Crear un nuevo producto");
    System.out.println("6. Asignar un producto a un almacén");
    System.out.println("7. Dar de baja un producto");
    System.out.println("8. Dar de baja un almacén");
    System.out.println("9. Salir del Sistema\n");
 
    System.out.println("Elija una opción");
    Integer opcion;
    Scanner sc = new Scanner(System.in);
    opcion=sc.nextInt();
    if(opcion.equals(1)){
        ........
    }else if(opcion.equals(2)){
        ........
    }else if(opcion.equals(3)){
        ........
    }else if(opcion.equals(4)){
        int ID;
        String nombre;
        System.out.println("Introduzca un ID");
        ID = sc.nextInt();
        System.out.println("Introduzca un nombre");
        nombre = sc.nextLine();
        System.out.println(ID +" " +nombre);
        //controles.nuevoAlmacen(ID, nombre);
    }else if(opcion.equals(5)){
        ........
    }else if(opcion.equals(6)){
        ........
    }else if(opcion.equals(7)){
        ........
    }else if(opcion.equals(8)){
        ........
    }else if(opcion.equals(9)){
        ........
    }else{
        System.out.println("\nOpción no válida. Vuelva a intentarlo\n");
        inicio();
    }
}

Muchas gracias !!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 21
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Problema al utilizar la función Scanner

Publicado por Jose_Romero (10 intervenciones) el 11/11/2018 15:41:47
Ya lo pude solucionar, consistiría en incluir debajo del ID otro sc.nextInt(); para que no haya problemas con el buffer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Xavi
Val: 491
Bronce
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Problema al utilizar la función Scanner

Publicado por Xavi (25 intervenciones) el 11/11/2018 19:02:21
Gracias por comentarlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar