¡Advertencia!
Este tema no ha tenido respuestas en más de un mes. Recuerda que si deseas añadir una nueva debes cumplir con las normas de la web.
Vale chicos, a ver si me podéis ayudar:
En el siguiente código se muestra una parte de un programa que simula un hotel (introducir nombre y edad, reservar una o más habitaciones, etc). Lo que quiero es que al acabar el programa o cuando el usuario no introduzca lo que se le pide ( por ejemplo si nos pide introducir un "si" o un "no" pues que le meta un "asjasj"), que el programa te devuelva al principio y te lo vuelva a preguntar. Aquí dejo la parte del código:
Tengo la idea de que toda esa parte de código tiene que estar dentro de un "do while", pero no se como poner la sintasís, el return, etc.
PD: Estoy programando en Java.
PD2: Los returns que están justo debajo se los tengo puestos porque sino el programa sigue leyendo hacía abajo y no termina de funcionar bien.
En el siguiente código se muestra una parte de un programa que simula un hotel (introducir nombre y edad, reservar una o más habitaciones, etc). Lo que quiero es que al acabar el programa o cuando el usuario no introduzca lo que se le pide ( por ejemplo si nos pide introducir un "si" o un "no" pues que le meta un "asjasj"), que el programa te devuelva al principio y te lo vuelva a preguntar. Aquí dejo la parte del código:
opcion=Teclado.leerCadena("¿Desea hacer una reserva? Responda Si o No:");
if(opcion.equalsIgnoreCase("Si")){
opcionHabitacion=Teclado.leerEntero("¿Cuántas habitaciones desea reservar?");
if(opcionHabitacion<=5){
System.out.println("Usted ha elegido " +opcionHabitacion+ " habitaciones. Le saldrá a " +
(opcionHabitacion*200) + " euros por día.");
}else{
System.out.println("Lo sentimos. No tenemos tantas habitaciones disponibles.");
}return;
}
if(opcion.equalsIgnoreCase("No")){
System.out.println("Gracias por nada, gilipollas.");
return;
}else{
System.out.println("No ha introducido lo que le pediamos, vuelva a intentarlo.");
return;
}
if(opcion.equalsIgnoreCase("Si")){
opcionHabitacion=Teclado.leerEntero("¿Cuántas habitaciones desea reservar?");
if(opcionHabitacion<=5){
System.out.println("Usted ha elegido " +opcionHabitacion+ " habitaciones. Le saldrá a " +
(opcionHabitacion*200) + " euros por día.");
}else{
System.out.println("Lo sentimos. No tenemos tantas habitaciones disponibles.");
}return;
}
if(opcion.equalsIgnoreCase("No")){
System.out.println("Gracias por nada, gilipollas.");
return;
}else{
System.out.println("No ha introducido lo que le pediamos, vuelva a intentarlo.");
return;
}
Tengo la idea de que toda esa parte de código tiene que estar dentro de un "do while", pero no se como poner la sintasís, el return, etc.
PD: Estoy programando en Java.
PD2: Los returns que están justo debajo se los tengo puestos porque sino el programa sigue leyendo hacía abajo y no termina de funcionar bien.
"Vive alegre y a lo loco que lo bueno dura poco".
Si el programa va a ser eso, hazlo con un bucle WHILE.
MIENTRAS que lo leido sea distinto de SI y sea distinto de NO
hacer pregunta
(Explicado para dummies)
Si pone algo distinto de si y de no, volvera a lanzar la pregunta, si responde SI o NO, saldra del bucle, y ya podras procesar la respuesta.
MIENTRAS que lo leido sea distinto de SI y sea distinto de NO
hacer pregunta
(Explicado para dummies)
Si pone algo distinto de si y de no, volvera a lanzar la pregunta, si responde SI o NO, saldra del bucle, y ya podras procesar la respuesta.
Habbo Old. Buenos momentos aquellos de cacería...
Si el programa va a ser eso, hazlo con un bucle WHILE.
MIENTRAS que lo leido sea distinto de SI y sea distinto de NO
hacer pregunta
(Explicado para dummies)
Si pone algo distinto de si y de no, volvera a lanzar la pregunta, si responde SI o NO, saldra del bucle, y ya podras procesar la respuesta.
Si, ¿pero qué es lo que tengo que poner dentro de ese "while()"? Dentro de los paréntesis. Ya he probado metiendo esto y sigue sin ir:
while(opcion.equalsIgnoreCase("Si") || opcion.equalsIgnoreCase("No")){
opcion=Teclado.leerCadena("¿Desea hacer una reserva? Responda Si o No:");
if(opcion.equalsIgnoreCase("Si")){
opcionHabitacion=Teclado.leerEntero("¿Cuántas habitaciones desea reservar?");
if(opcionHabitacion<=5){
System.out.println("Usted ha elegido " +opcionHabitacion+ " habitaciones. Le saldrá a " +
(opcionHabitacion*200) + " euros por día.");
}else{
System.out.println("Lo sentimos. No tenemos tantas habitaciones disponibles.");
}return;
}
if(opcion.equalsIgnoreCase("No")){
System.out.println("Gracias por nada, gilipollas.");
return;
}else{
System.out.println("No ha introducido lo que le pediamos, vuelva a intentarlo.");
return;
}
}
opcion=Teclado.leerCadena("¿Desea hacer una reserva? Responda Si o No:");
if(opcion.equalsIgnoreCase("Si")){
opcionHabitacion=Teclado.leerEntero("¿Cuántas habitaciones desea reservar?");
if(opcionHabitacion<=5){
System.out.println("Usted ha elegido " +opcionHabitacion+ " habitaciones. Le saldrá a " +
(opcionHabitacion*200) + " euros por día.");
}else{
System.out.println("Lo sentimos. No tenemos tantas habitaciones disponibles.");
}return;
}
if(opcion.equalsIgnoreCase("No")){
System.out.println("Gracias por nada, gilipollas.");
return;
}else{
System.out.println("No ha introducido lo que le pediamos, vuelva a intentarlo.");
return;
}
}
Se que tengo un fallo muy tonto pero no lo veo, xD.
"Vive alegre y a lo loco que lo bueno dura poco".
El fallo tonto es que estas preguntando si opcion es algo, cuando seguramente ni lo has definido, y no se como reacciona.
Ten en cuenta que atnes de comprobar si es igual o no, debes haber hecho la pregunta una vez, por eso en vez de un while a secas, prueba con un DO-WHILE
DO{
pregunta
}While(distinto de si y no)
Y no metas el resto del codigo dentro, porque lo procesará antes de comprobar si es igual o no.
Ten en cuenta que atnes de comprobar si es igual o no, debes haber hecho la pregunta una vez, por eso en vez de un while a secas, prueba con un DO-WHILE
DO{
pregunta
}While(distinto de si y no)
Y no metas el resto del codigo dentro, porque lo procesará antes de comprobar si es igual o no.
Habbo Old. Buenos momentos aquellos de cacería...
El fallo tonto es que estas preguntando si opcion es algo, cuando seguramente ni lo has definido, y no se como reacciona.
Ten en cuenta que atnes de comprobar si es igual o no, debes haber hecho la pregunta una vez, por eso en vez de un while a secas, prueba con un DO-WHILE
DO{
pregunta
}While(distinto de si y no)
Y no metas el resto del codigo dentro, porque lo procesará antes de comprobar si es igual o no.
He conseguido resolverlo poniendo dentro del "while" el maldito TRUE. Gracias por la ayuda.
"Vive alegre y a lo loco que lo bueno dura poco".