Java - Llenar un String por teclado

 
Vista:

Llenar un String por teclado

Publicado por Delis (3 intervenciones) el 21/11/2021 12:55:40
import java.util.*;

public class PrEj07Ex {
static Scanner tc = new Scanner(System.in);

static void llenarMarcas(String[] MARCAS) {
for (int i = 0; i < MARCAS.length; i++) {
System.out.println("Dame la marca de coche " +(i+1)+ ": ");
MARCAS[i] = tc.nextLine();
}
}

public static void main(String[] args) {
String VENDEDORES[] = { "María", "Raquel", "Antonio", "Pedro", "Soledad", "Marcos", "Mercedes" };
int[][] VENTAS;
System.out.print("Dime el número de marcas de coche: ");
int marcas = tc.nextInt();
String MARCAS[]=new String[marcas];
llenarMarcas(MARCAS);
System.out.println(Arrays.toString(MARCAS));
}
}

Lo que no entiendo es por qué esta vez al ejecutarlo me sale esto. Meto las marcas de coche y directamente me genera 2 lineas del Syso quedando MARCAS[0] vacio.


Dime el número de marcas de coche: 5
Dame la marca de coche 1:
Dame la marca de coche 2:
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

Llenar un String por teclado

Publicado por Kabuto (1102 intervenciones) el 21/11/2021 23:14:57
Hola.

Leer datos numéricos y datos String en un mismo programa, siempre da problema.

Para evitarlos, es mejor hacer todas las lecturas con nextLine(), y si lo que queremos es un dato numérico, lo parseamos

Es decir, estas lecturas:
1
int marcas = tc.nextInt();

Cámbialas así:
1
int marcas = Integer.parseInt(tc.nextLine());

Así sigues obteniendo un int, pero usando nextLine() como cuando quieres leer Strings. Esto evitaría problemas.
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

Llenar un String por teclado

Publicado por gaspy (1 intervención) el 22/11/2021 19:28:11
Para evitar ese problema es mejor utilizar el tc.next() despues de un tc.nextInt(). Es decir, esta linea:

1
MARCAS[i] = tc.nextLine();

la reemplazas por:

1
MARCAS[i] = tc.next();

y ya no deberia darte problemas.
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

Llenar un String por teclado

Publicado por Brandon Mart (20 intervenciones) el 24/11/2021 02:05:23
saludos, ya lo resolviste?
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