Java - se salta una linea al pedir datos de Scanner

 
Vista:
sin imagen de perfil

se salta una linea al pedir datos de Scanner

Publicado por luis (2 intervenciones) el 09/09/2017 22:21:11
Que tal programadores;

Me ayudan por favor con esto;

Tengo que hacer una aplicacion que cree 2 vectores uno tipo Int y el otro tipo String
después pide al usuario que ingrese el tamaño de cada vector
después se debe imprimir el vector de números en el orden que los ingresaron, después al revés de como lo ingresaron después que busque un numero si esta o no en la matriz, y después imprimirlo en orden

con el vector de tipo String que pida letras, y diga cuantas veces se repite la letra solicitada por el usuario;
aquí es donde tengo el problema. al ejecutar empieza a pedirme los datos desde la posición numero 1 del vector, no me esta pidiendo la de posición 0

***CODIGO y EJECUCIÓN adjuntos***
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
sin imagen de perfil

se salta una linea al pedir datos de Scanner

Publicado por Juan Francisco (58 intervenciones) el 11/09/2017 10:59:10
Cuando haces un sc.nextInt(), en el buffer del Scanner queda el intro ..que se considera como una cadena..asi cuando terminas de rellenar la primera matriz de enteros ..alfinal queda un intro..el cual coge el siguiente sc.nextLine()..que encuentre ..y es es el de la primera posicion la 0.. con los sc.nextInt() no sucede por que lo que espera un entero y el intro no lo es..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void llenar(){
    Scanner sc = new Scanner (System.in);
 
    for(int i=0; i<tam_n; i++){
        System.out.print("Dijite el valor del contenido vector X [" +i +"] = ");
        x[i] = sc.nextInt();      //<-AQUI ALFINAL QUEDA UN INTRO      
    }
   sc.netLine()//<- ESTO HARA QUE EL INTRO SE BORRE DEL BUFFER Y TE PIDA LA POSICION 0
    for(int k=0; k<tam_c;k++){
 
        System.out.print("Dijite la letra del contenido vector C [" +k+"] = ");
 
        c[k] = sc.nextLine();  //<- SINO HACES UN sc.nextLine() ANTES LO COGE ESTE ..Y NO TE PIDE ESA POSCION O SEA EN LA   POSICION 0 HABRA UN INTRO DIRECTAMENTE          
 
    }
}
En la página del compañero también aparecera el motivo ...es un error tipico del Scanner,que trae mucho dolor de cabeza sino sabes el motivo :P
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
Imágen de perfil de Mozzie

se salta una linea al pedir datos de Scanner

Publicado por Mozzie (6 intervenciones) el 12/09/2017 04:00:11
Pues creo que programas en blog de notas verdad? porque veo que no pusiste método de main y parecería que estas programando
orientado a objetos, aquí dejo tu código resuelto, y no pidas nextline porque te pedirá la siguiente linea solo pon next como el siguiente
código que hiciste ya corregido, si no te sirve el método main borralo y quita comentarios del cargue y del {


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class ayudando {
// public void cargue(){
// aqui hiciste un procedimiento siempre necesitas poner el metodo main para este tipo de codigo
    public static void main(String[] args) {
 
    Scanner sc = new Scanner (System.in);
    System.out.println("Ingrese cuantas filas quiere");
    int fila = sc.nextInt();
    System.out.println("Ingrese cuantas columnas quiere");
    int columna = sc.nextInt();
    String matriz [][] = new String[fila][columna];
    //for para ingresar datos
    for (int  x=0; x < matriz.length; x++){ // CICLO FILAS
        for (int  y = 0; y < matriz[x].length; y++){ // CICLO COLUMNAS
            System.out.println("Dijite el nombre de la matriz de la posicion ["+x+"," +y+"]");
            matriz[x][y] = sc.next();
            // Si pones next line te imprimira la siguiente linea, asi que la primera te la salta, intentalo
        }
    }
    //for para regresar datos
    for (int  x=0; x < matriz.length; x++){ // CICLO FILAS
        for (int  y = 0; y < matriz[x].length; y++){ // CICLO COLUMNAS
            System.out.println("El nombre de la matriz ["+x+"," +y+"] es  "+matriz[x][y]+"\n");
        }
    }
}
    }
//}
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