Problema con String o Scanner
Publicado por jose (73 intervenciones) el 21/09/2021 18:39:55
Buenas tardes,
Estoy realizando ejercicio de Java que en la función reservar asiento, pregunta por la fila y el asiento a través de la función reservarAsiento.
Desde ahí envío los datos de teclado y el array, que abajo expongo, a la función obtenerPosicionPorFilaAsientos(avio, filaStr, asientoEleccion);
Resulta que haciendo un debug se salta la línea System.out.println("la fila " + fila + " y el asiento " + asiento + " estan en la posición " + i); del métedo obtenerPosicionPorFilaAsientos, eso ocurre cuando las variables filaStr, asientoEleccion son recogidas a través del menú de la función reservarAsiento.
Sin embargo si a esas variables les doy el valor desde el código
o obtenerPosicionPorFilaAsientos(avio, "2","B");
funciona correctamente.
Creo que el problema está en los scanner, pero no se donde puede estar el problema.
Todos los valores son enviados como String.
Se agradecería si alguien me pudiera echar una mano con esto.
Muchas gracias de antemano.
Estoy realizando ejercicio de Java que en la función reservar asiento, pregunta por la fila y el asiento a través de la función reservarAsiento.
Desde ahí envío los datos de teclado y el array, que abajo expongo, a la función obtenerPosicionPorFilaAsientos(avio, filaStr, asientoEleccion);
Resulta que haciendo un debug se salta la línea System.out.println("la fila " + fila + " y el asiento " + asiento + " estan en la posición " + i); del métedo obtenerPosicionPorFilaAsientos, eso ocurre cuando las variables filaStr, asientoEleccion son recogidas a través del menú de la función reservarAsiento.
1
2
3
4
if ((fila == avion[i][1]) && (asiento == avion[i][2])) {
System.out.println("la fila " + fila + " y el asiento " + asiento + " estan en la posición " + i);
posicion = i;
}
Sin embargo si a esas variables les doy el valor desde el código
1
2
3
filaStr = "2";
asientoEleccion = "B";
obtenerPosicionPorFilaAsientos(avio, filaStr, asientoEleccion)
o obtenerPosicionPorFilaAsientos(avio, "2","B");
funciona correctamente.
Creo que el problema está en los scanner, pero no se donde puede estar el problema.
Todos los valores son enviados como String.
1
2
3
4
5
6
7
8
String[][] avion = {
{"1", "1", "A", "45821635K"},
{"1", "1", "B", "45821635K"},
{"1", "1", "C", "45821635K"},
{"1", "1", "D", "45821635K"},
{"1", "2", "A", ""},
{"1", "2", "B", ""},
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
void reservarAsiento(String[][] avio) {
int filaEleccion = 0;
String asientoEleccion = "";
String filaStr = "";
Scanner fila = new Scanner(System.in);
Scanner asiento = new Scanner(System.in);
int posicio;
System.out.println("RESERVAR ASIENTO");
System.out.println("################");
System.out.print("Elija la fila del avión del 1-11:");
try {
filaEleccion = fila.nextInt();
if ((filaEleccion < 1) || (filaEleccion > 11)) {
System.out.println("Es mayor de 11 y menor que 1");
reservarAsiento(avion);
} else if ((filaEleccion > 1) || (filaEleccion < 11)) {
System.out.println("correcto " + filaEleccion);
filaStr = String.valueOf(filaEleccion);
} else {
System.out.println("Has de introducir un número");
fila.next();
}
} catch (InputMismatchException e) {
System.out.println("Has de introducir un número");
fila.next();
}
System.out.print("Elija el Asiento del A-D:");
asientoEleccion = asiento.nextLine();
System.out.println(filaStr + " " + asientoEleccion);
//Obteniendo la posición de la fila
posicion = obtenerPosicionPorFilaAsientos(avio, filaStr, asientoEleccion);
System.out.println("posición :" + posicion);
}
int obtenerPosicionPorFilaAsientos(String[][] avion, String fila, String asientos) {
int posicion = 0;
for (int i = 0; i < avion.length; i++) {
for (int j = 0; j < avion[i].length; j = j + NUMERO_ASIENTOS_POR_FILA) {
if ((fila == avion[i][1]) && (asiento == avion[i][2])) {
System.out.println("la fila " + fila + " y el asiento " + asiento + " estan en la posición " + i);
posicion = i;
}
}
}
if (posicion == 0) {
return FILA_INEXISTENTE;
} else {
return posicion;
}
}
Se agradecería si alguien me pudiera echar una mano con esto.
Muchas gracias de antemano.
Valora esta pregunta


0