Java - Error al pedir datos String despues de pedir Int

 
Vista:
sin imagen de perfil

Error al pedir datos String despues de pedir Int

Publicado por Roger (2 intervenciones) el 30/08/2023 07:10:18
Hola amigos, este error me lleva rompiendo la cabeza por que soy nuevo


Cree un simple java que pide primero "año de nacimiento" y finalmente "nombre" pero cuando llega la hora de pedir el dato de nombre se pasa de frente y no da opcion de contestar la pregunta.


Curiosamente, cuando cambio el orden, es decir, primero pido "Nombre" luego pido " año de nacimiento", funciona perfecto


No se que tenga que ver que despues de pedir datos Int y luego pido String no funciona, pero si lo hago al reves si funciona bien

Aqui les dejo el codigo :


************************************************************************************

import java.util.Scanner;

public class Preguntas{
public static void main(String args[]){

Scanner floro = new Scanner(System.in);
String nombre = "";
int numUno = 0;



System.out.println("¿en que año naciste? ");
numUno = floro.nextInt();

System.out.println("¿Cual es tu nombre ?");
nombre = floro.nextLine();




System.out.println( nombre + " nacio en el año " + numUno );




}
}



***********************************************************


Espero sus soluciones

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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Error al pedir datos String despues de pedir Int

Publicado por Kabuto (1383 intervenciones) el 31/08/2023 20:07:08
Esto siempre ocurre, es "normal".
Cuando se hace lectura de datos numéricos, (int, double, byte,...) el Scanner recoge únicamente lo necesario para construir un valor numérico, dejando en memoria el carácter que representa a la tecla "enter" que hemos pulsado para hacer la entrada (sí, la tecla enter tiene su propio carácter)

Entonces, luego al leer un String, aquí el Scanner lo acepta todo y al encontrarse con el carácter "enter" de la entrada anterior, piensa que el usuario ya ha terminado de teclear el String así que da por finalizada la lectura, cuando en realidad el usuario no ha podido teclear nada.

Para evitarlo, lo mejor es hacer TODAS las lecturas con nextLine(), ya que de esta manera no quedan restos en la memoria. Y si lo que necesitamos es un número, pues hacemos un parseo al tipo numérico que necesitemos:


1
2
3
4
5
System.out.println("¿en que año naciste? ");
numUno = Integer.parseInt(floro.nextLine()); //Leemos un String y parseamos a int
System.out.println("¿Cual es tu nombre ?");
nombre = floro.nextLine();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Error al pedir datos String despues de pedir Int

Publicado por Roger (2 intervenciones) el 31/08/2023 23:11:50
Gracias Kabuto logre solucionar mi problema con tu ayuda

Saludos
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