Hola banda tengo esta duda. en este código:
Scanner input = new Scanner(System.in);
System.out.println("Please enter a number");
int n = input.nextInt();
System.out.println("Please enter a number");
int m = input.nextInt();
System.out.println( n );
Debería poner un input.nextLine() para "limpiar" el contenido del Scanner (eso me han dicho en clase). La cosa es que si lo pongo o no, en este código simple funciona igual. Alguien podría explicarme por qué funciona igualmente y que es lo que hace exactamente? o en este código tan simple no sirve para mucho? en que ocasiones serviría y como? Gracias!
---------------------------
Respuesta
Lo que sucede es lo siguiente. Digamos que cuando estés ingresando un número, luego quieras ingresar un texto. En ese caso particular tendría que limpiar el Scanner, ya que input.nextInt() solo lee el valor int. Entonces, cuando continúes leyendo con input.nextLine(), recibirá la tecla "\n" Enter. Entonces, para omitir esto, debe agregar input.nextLine().
Ejemplo
System.out.print("Insert a number: ");
int number = input.nextInt();
input.nextLine(); // Esta línea la tienes que agregar (consume el carácter \n)
System.out.print("Text1: ");
String text1 = input.nextLine();
System.out.print("Text2: ");
String text2 = input.nextLine();
Ya que al no agregar la línea input.nextLine(); luego del input.nextInt(); lo que ocurrirá será que después de ingresar el valor numérico, se omitirá el primer input.nextLine() y se ejecutará el segundo, por lo que mi salida se ve así:
insert a number: 100
Text1: Text2: Mi texto 2
¿Y el texto 1? Se saltió.
Mas información en: https://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-or-nextfoo
No hay comentarios, ¡cuéntame algo!
Me gustaría saber tu opinión. ¡Saludos!