Foro de elhacker.net

Programación => Java => Mensaje iniciado por: razler en 29 Agosto 2011, 03:34 am



Título: Problema con nextLine(), como evitar salto de linea
Publicado por: razler en 29 Agosto 2011, 03:34 am
hola  tengo un problema con el scanner, lo que sucede es que cuando deseo leer string con el nextLine() , en consola de salta a la otra instruccion, por ejemplo.

Código
  1. System.out.print("Ingrese el Alumno: ");
  2. System.out.print("Nombre ---> ");
  3. n = in.nextLine();
  4. System.out.print("Nota ---> ");
  5. s = in.nextDouble();
  6. System.out.print("Codigo ---> ");
  7. j = in.nextDouble();

Luego me resulta  en consola de manera

Ingrese el Alumno:
 Nombre ---> Nota --->

Es decir se salta la instrucción de leer el nombre ,y solo lee la nota y realiza la instrucciones que esten debajo.
Como debo hacer para evitar esto empleando el nextLine()?
Agradeceria mucho su ayuda   :)



Título: Re: Problema con nextLine(), como evitar salto de linea
Publicado por: Debci en 29 Agosto 2011, 10:27 am
No si es a lo que te refieres, pero quieres evitar que se suban los textos unos encima de otros?

Código
  1. System.out.print("Ingrese el Alumno: ");
  2. System.out.print("Nombre ---> \n");
  3. n = in.nextLine();
  4. System.out.print("Codigo ---> \n");
  5. s = in.nextDouble();
  6. System.out.print("Nota ---> \n");
  7. j = in.nextDouble();

Corrígeme si no era eso, y en cualquier caso explícate un poquito mejor.

Un saludo!


Título: Re: Problema con nextLine(), como evitar salto de linea
Publicado por: razler en 29 Agosto 2011, 18:24 pm
Bueno no es debido al salto de linea ,ya que si coloco como me dices seria igual, osea el resultado en consola seria :

Ingrese el Alumno:
 Nombre --->
 Nota --->

 Solo podría leer nota mas no nombre y las demás instrucciones que estén debajo. Este problema ocurre con los strings. En c++ se podria evitar esto empleando el fflush() pero en java no se como se realizaria. Tambien podria evitarlo usando bufferreader , pero en una lectura con nextLine() como podria evitar este inconveniente ?


Título: Re: Problema con nextLine(), como evitar salto de linea
Publicado por: RyogiShiki en 29 Agosto 2011, 18:43 pm
Eso se debe a que la posición de lectura está justo después de un salto de linea, lo que te retornara una cadena vacia, así que te sugiero que después de leer cualquier número (int, double, float) agregues la siguiente linea para evitar dicho inconveniente:

Código
  1. in.skip("\n");

Saludos


Título: Re: Problema con nextLine(), como evitar salto de linea
Publicado por: Valkyr en 29 Agosto 2011, 21:31 pm
Y porqué no haces un BufferedReader y vas leyendo línea a línea, es decir, en la primera línea lees el nombre, en la siguiente línea lees el decimal y lo parseas con Double.parseDouble, después lees el otro y haces lo mismo.

Es decir, sería algo así:

Código
  1. System.out.println("Ingrese Alumno:");
  2. System.out.println("Nombre: ");
  3. n = in.readLine();
  4. System.out.println("Codigo: ");
  5. s = Double.parseDouble(in.readLine());
  6. System.out.println("Nota: ");
  7. j = Double.parseDouble(in.readLine());

Saludos.


Título: Re: Problema con nextLine(), como evitar salto de linea
Publicado por: razler en 1 Septiembre 2011, 05:22 am
Gracias gankutsuo , con ese metodo era suficiente aohra peudo leer sin problemas :)