Lectura por teclado con Scanner

Hola, tengo problemas con mi codigo, todo me anda bien hasta llegar a la parte de preguntarme el sexo, simplemente me pregunta el sexo pero no me deja poner nada porq se va automaticamente a la otra linea q es la que imprime todos los datos:

import java.util.Scanner;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package eje1;

/**
 *
 * @author th3r0rn
 */

public class Main {

    /**
     * @param args the command line arguments
     */

    public static void main(String[] args) {
        String Nombre;
        String Direccion;
        int Telefono;
        int Edad;
        String Sexo;

        Scanner leer = new Scanner(System.in);
        System.out.println("Ingrese su nombre: ");
        Nombre=leer.nextLine();
        System.out.println("Ahora ingrese su direccion:");
        Direccion=leer.nextLine();
        System.out.println("Ingrese Telefono;");
        Telefono=leer.nextInt();
        System.out.println("Ingrese su edad: ");
        Edad=leer.nextInt();
        System.out.println("Ingrese su sexo:");
        Sexo=leer.nextLine();

        System.out.println("Hola "+Nombre+" Vives en la direccion "+Direccion+" Tu telefono es: "+Telefono+" Tienes "+Edad+" Años de edad y tu sexo es: "+Sexo);
       
         

    }

}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de francisco.santiagoj

Recomendación

Puedes solictar el sexo junto con el nombre y dirección (NextLine(); String) y ya no lo omitira, pero no se realmente la causa de por que se lo salta, ¿alguien que nos ayude?

Imagen de ezamudio

Sexo

Los programadores siempre tenemos problemas con el sexo...

no ya en serio, has intentado usar Console.readLine() ? o en vez de Scanner, usar un BufferedInputStream? y en vez del println final puedes usar un printf

Imagen de Shadonwk

prueba a pedir primero el

prueba a pedir primero el sexo despues la edad invirte algunos datos juega y aver que pasa..

Hola, con

Hola, con BufferedInputStream seguramente no daria problemas pero lo que quiero hacer es hacerlo con Scanner, es por eso que quiero solucionarlo asi, el problema de este error es que es MUY RARO ya probe cambiar tipos de datos como el de edad de INT a Byte pero aun asi al pasar a la parte de sexo se lo salta :( La salida:
run:
Ingrese su nombre:
Luis
Ahora ingrese su direccion:
revolucion
Ingrese Telefono;
324
Ingrese su edad:
22
Ingrese su sexo:
Hola Luis Vives en la direccion revolucion Tu telefono es: 324 Tienes 22 Años de edad y tu sexo es: Naciste en el año 1988
BUILD SUCCESSFUL (total time: 8 seconds)
Como se dan cuenta se pasa rapido de edad a sexo sin darme chance de poner el sexo y posteriormente me imprime lo demas.

SOLUCIONADO

Hola, ya me ayudo una amiga, solo movio sexo mas al incio y quedo solucionado, aunque aun asi se me hace algo muy raro

import java.util.Scanner;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author th3r0rn
 */

public class Main {

    /**
     * @param args the command line arguments
     */

    public static void main(String[] args) {
        String Nombre;
        String Direccion;
        int Telefono;
        int Edad;
        int anio;
        String Sexo;

        Scanner leer = new Scanner(System.in);
        System.out.println("Ingrese su nombre: ");
        Nombre=leer.nextLine();
        System.out.println("Ahora ingrese su direccion:");
        Direccion=leer.nextLine();
        System.out.println("Ingrese su sexo:");
        Sexo=leer.nextLine();
        System.out.println("Ingrese Telefono;");
        Telefono=leer.nextInt();
        System.out.println("Ingrese su edad: ");
        Edad=leer.nextInt();
      //  print("");
        anio=2010-Edad;

        System.out.println("Hola "+Nombre+" Vives en la direccion "+Direccion+" Tu telefono es: "+Telefono+" Tienes "+Edad+" Años de edad y tu sexo es: "+Sexo+" Naciste en el año "+anio);

    }

}

Imagen de francisco.santiagoj

efectivamente

efectivamente queda solucionado si lo mueves junto con el nombre y la direccion que soliitan datos del mismo tipo
Strings, pero alguien sabe por que pasa esto?

Imagen de benek

Comportamiento de Scanner

La clase Scanner divide los datos ingresados de dos maneras, por líneas y por tokens, cuando haces nextLine() obtienes toda la línea, pero cuando obtienes next(), nextByte(), nextInt(), etc... obtienes el token siguiente (aunque esté en la misma línea) según un delimitador que puedes configurar. Este comportamiento es útil cuando le dices a Scanner que lea a partir un archivo, pero de alguna manera se anula cuando lees directo de System.in, por eso el comportamiento extraño, ahora explico.

Cuando lees con nextInt() (en tu caso, aunque es el mismo para los demás excepto nextLine()) la instancia de Scanner te devuelve lo ingresado, pero el enter que le tiene que dar el usuario lo guarda en el input, es por eso que cuando viene después el nextLine() lee lo que quedó del input (el salto de línea) y da otro más por el mismo comportamiento de nextLine(), entonces es como si el usuario hubiera dado un enter sin haber escrito nada.

Mira lo que dice la documentación de Scanner:

String nextLine()
Advances this scanner past the current line and returns the input that was skipped.

Lo solucionas usando next() en lugar de nextLine() después de usar cualquier next que devuelva un primitivo, en tu caso nextInt().

package org.javamexico.test;

import java.util.Scanner;

/**
 * Date: 1/02/2010
 * Time: 04:15:32 AM
 * @author Javier Ramirez Jr.
 */

public class PruebaScanner {
    public static void main(String[] args) {
        String Nombre;
        String Direccion;
        int Telefono;
        int Edad;
        String Sexo;

        Scanner leer = new Scanner(System.in);
        System.out.println("Ingrese su nombre: ");
        Nombre=leer.nextLine();
        System.out.println("Ahora ingrese su direccion:");
        Direccion=leer.nextLine();
        System.out.println("Ingrese Telefono:");
        Telefono=leer.nextInt();
        System.out.println("Ingrese su edad: ");
        Edad=leer.nextInt();
        System.out.println("Ingrese su sexo:");
        Sexo=leer.next();

        System.out.println("Hola "+Nombre+" Vives en la direccion "+Direccion+" Tu telefono es: "+Telefono+" Tienes "+Edad+" Años de edad y tu sexo es: "+Sexo);

    }
}

Salida:

Ingrese su nombre:
Benek
Ahora ingrese su direccion:
Sta Teresa
Ingrese Telefono:
55555
Ingrese su edad:
25
Ingrese su sexo:
Masculino
Hola Benek Vives en la direccion Sta Teresa Tu telefono es: 55555 Tienes 25 Años de edad y tu sexo es: Masculino

Process finished with exit code 0

Es un poco enredado pero espero haberme explicado, cualquier duda no dudes en preguntar.

Saludos.

Javier Ramírez Jr.

Imagen de JaimeItlzc

Ahora entiendo

Ahora entiendo es por eso que tenia el problema ayer con  Scanner.
Cuando hacia esto:

   System.out.print("Ingrese el numero del par: ");
        num = scanner.nextByte(); //Esta si puedo ingresar informacion
 
        System.out.print("Ingrese el color del par (n, r, v): ");
        col = scanner.nextLine(); //Esta se la salta

Saludos.