Foro de elhacker.net

Programación => Java => Mensaje iniciado por: shadows789 en 20 Abril 2014, 04:05 am



Título: problema con system.out
Publicado por: shadows789 en 20 Abril 2014, 04:05 am
hola chicos estoy aprendiendo java para extender mis conocimientos en programacion :P . Lo que sucede es que estoy practicando con un libro que consegui y en un entrada.nextLine(); no lo lee. este es el codigo:

import java.util.Scanner;
public class pruebaempleado {
   public static void main(String args[]){
      Scanner entrada=new Scanner(System.in);
      double sueldo;
      String nombre,apellido;
      System.out.print("Escribe el nombre de empleado1:");nombre=entrada.nextLine();
      System.out.print("Escribe el apellido de empleado1:");apellido=entrada.nextLine();
      System.out.print("Escribe su sueldo:");sueldo=entrada.nextDouble();
      empleado empleado1=new empleado(nombre,apellido,sueldo);

      System.out.print("Escribe el nombre de empleado2:");nombre=entrada.nextLine();<-salta esta entrada
      System.out.print("Escribe el apellido de empleado2:");apellido=entrada.nextLine();
      System.out.print("Escribe su sueldo:");sueldo=entrada.nextDouble();
      empleado empleado2=new empleado(nombre,apellido,sueldo);
Alguien que sepa el problema y que me pueda aconsejar , soy demasiado nuevo en java.
Muchas gracias !


Título: Re: problema con system.out
Publicado por: gordo23 en 20 Abril 2014, 04:55 am
El problema es que cuando usas la función nextXXX de la clase Scanner, siendo XXX = Int/Double/etc, esta lo único que lee es el siguiente número pero no te lee el salto de linea ("\n") que se ingresa cuando apretas la tecla Enter. Por lo que el próximo nextLine lee ese salto de linea.

Para solucionar esto podés hacerlo de 2 maneras, una es leer TODAS las entradas con nextLine() y cuando tengas que leer un número usar la función:

sueldo =  Integer.valueOf(entrada.nextLine()); si es que se trata de leer un entero.

La otra es que después de leer un entero con:
sueldo =  entrada.nextInt();

escribir una sentencia abajo:
entrada.nextLine();    para que lea el salto de linea y ahora si puedas usar el próximo nextLine() de manera correcta.


Bueno, eso seria todo, si no entendiste avisa e intento explicarlo de otra forma.

Saludos.-


Título: Re: problema con system.out
Publicado por: shadows789 en 20 Abril 2014, 15:45 pm
entendi de una, ya lo solucione , gracias por la respuesta :D


Título: Re: problema con system.out
Publicado por: gordo23 en 20 Abril 2014, 20:49 pm
Buenísimo, de nada.

Saludos.-